diff options
Diffstat (limited to 'src/websockets/qwebsocketserver_p.cpp')
-rw-r--r-- | src/websockets/qwebsocketserver_p.cpp | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp index 10f328a..3772eee 100644 --- a/src/websockets/qwebsocketserver_p.cpp +++ b/src/websockets/qwebsocketserver_p.cpp @@ -41,6 +41,9 @@ #include "qwebsocketserver.h" #include "qwebsocketserver_p.h" +#ifndef QT_NO_SSL +#include "qsslserver_p.h" +#endif #include "qwebsocketprotocol.h" #include "qwebsockethandshakerequest_p.h" #include "qwebsockethandshakeresponse_p.h" @@ -57,17 +60,32 @@ QT_BEGIN_NAMESPACE /*! \internal */ -QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, QWebSocketServer * const pWebSocketServer, QObject *parent) : +QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, QWebSocketServerPrivate::SecureMode secureMode, + QWebSocketServer * const pWebSocketServer, QObject *parent) : QObject(parent), q_ptr(pWebSocketServer), m_pTcpServer(Q_NULLPTR), m_serverName(serverName), + m_secureMode(secureMode), m_pendingConnections() { Q_ASSERT(pWebSocketServer); - m_pTcpServer = new QTcpServer(this); + if (m_secureMode == NON_SECURE_MODE) + { + m_pTcpServer = new QTcpServer(this); + connect(m_pTcpServer, SIGNAL(newConnection()), this, SLOT(onNewConnection())); + } + else + { +#ifndef QT_NO_SSL + QSslServer *pSslServer = new QSslServer(this); + m_pTcpServer = pSslServer; + connect(pSslServer, SIGNAL(newEncryptedConnection()), this, SLOT(onNewConnection())); + connect(pSslServer, SIGNAL(peerVerifyError(QSslError)), q_ptr, SIGNAL(peerVerifyError(QSslError))); + connect(pSslServer, SIGNAL(sslErrors(QList<QSslError>)), q_ptr, SIGNAL(sslErrors(QList<QSslError>))); +#endif + } connect(m_pTcpServer, SIGNAL(acceptError(QAbstractSocket::SocketError)), q_ptr, SIGNAL(acceptError(QAbstractSocket::SocketError))); - connect(m_pTcpServer, SIGNAL(newConnection()), this, SLOT(onNewConnection())); } /*! @@ -290,6 +308,34 @@ QString QWebSocketServerPrivate::serverName() const } /*! + \internal + */ +QWebSocketServerPrivate::SecureMode QWebSocketServerPrivate::secureMode() const +{ + return m_secureMode; +} + +void QWebSocketServerPrivate::setSslConfiguration(const QSslConfiguration &sslConfiguration) +{ + if (m_secureMode == SECURE_MODE) + { + qobject_cast<QSslServer *>(m_pTcpServer)->setSslConfiguration(sslConfiguration); + } +} + +QSslConfiguration QWebSocketServerPrivate::sslConfiguration() const +{ + if (m_secureMode == SECURE_MODE) + { + return qobject_cast<QSslServer *>(m_pTcpServer)->sslConfiguration(); + } + else + { + return QSslConfiguration::defaultConfiguration(); + } +} + +/*! \internal */ void QWebSocketServerPrivate::onNewConnection() |