diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/websockets/qwebsocketserver.cpp | 8 | ||||
-rw-r--r-- | src/websockets/qwebsocketserver_p.cpp | 9 | ||||
-rw-r--r-- | src/websockets/qwebsocketserver_p.h | 1 |
3 files changed, 11 insertions, 7 deletions
diff --git a/src/websockets/qwebsocketserver.cpp b/src/websockets/qwebsocketserver.cpp index 2c6d677..0645947 100644 --- a/src/websockets/qwebsocketserver.cpp +++ b/src/websockets/qwebsocketserver.cpp @@ -495,10 +495,10 @@ quint16 QWebSocketServer::serverPort() const nextPendingConnection() is called. By default, the limit is 30 pending connections. - Clients may still able to connect after the server has reached its maximum number of - pending connections (i.e., QWebSocketServer can still emit the connected() signal). - QWebSocketServer will stop accepting the new connections, but the operating system may still - keep them in queue. + QWebSocketServer will emit the error() signal with + the QWebSocketProtocol::CloseCodeAbnormalDisconnection close code + when the maximum of connections has been reached. + The websocket handshake will fail and the socket will be closed. \sa maxPendingConnections(), hasPendingConnections() */ diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp index 061fb3f..a43e75a 100644 --- a/src/websockets/qwebsocketserver_p.cpp +++ b/src/websockets/qwebsocketserver_p.cpp @@ -70,7 +70,8 @@ QWebSocketServerPrivate::QWebSocketServerPrivate(const QString &serverName, m_secureMode(secureMode), m_pendingConnections(), m_error(QWebSocketProtocol::CloseCodeNormal), - m_errorString() + m_errorString(), + m_maxPendingConnections(30) { Q_ASSERT(pWebSocketServer); } @@ -178,7 +179,7 @@ bool QWebSocketServerPrivate::listen(const QHostAddress &address, quint16 port) */ int QWebSocketServerPrivate::maxPendingConnections() const { - return m_pTcpServer->maxPendingConnections(); + return m_maxPendingConnections; } /*! @@ -273,7 +274,9 @@ quint16 QWebSocketServerPrivate::serverPort() const */ void QWebSocketServerPrivate::setMaxPendingConnections(int numConnections) { - m_pTcpServer->setMaxPendingConnections(numConnections); + if (m_pTcpServer->maxPendingConnections() <= numConnections) + m_pTcpServer->setMaxPendingConnections(numConnections + 1); + m_maxPendingConnections = numConnections; } /*! diff --git a/src/websockets/qwebsocketserver_p.h b/src/websockets/qwebsocketserver_p.h index 617f35c..cc37df6 100644 --- a/src/websockets/qwebsocketserver_p.h +++ b/src/websockets/qwebsocketserver_p.h @@ -131,6 +131,7 @@ private: QQueue<QWebSocket *> m_pendingConnections; QWebSocketProtocol::CloseCode m_error; QString m_errorString; + int m_maxPendingConnections; void addPendingConnection(QWebSocket *pWebSocket); void setErrorFromSocketError(QAbstractSocket::SocketError error, |