summaryrefslogtreecommitdiff
path: root/src/websockets/qwebsocketserver_p.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/websockets/qwebsocketserver_p.cpp')
-rw-r--r--src/websockets/qwebsocketserver_p.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp
index d675056..b7972b0 100644
--- a/src/websockets/qwebsocketserver_p.cpp
+++ b/src/websockets/qwebsocketserver_p.cpp
@@ -384,17 +384,8 @@ void QWebSocketServerPrivate::setError(QWebSocketProtocol::CloseCode code, const
*/
void QWebSocketServerPrivate::onNewConnection()
{
- while (m_pTcpServer->hasPendingConnections()) {
- QTcpSocket *pTcpSocket = m_pTcpServer->nextPendingConnection();
- //use a queued connection because a QSslSocket
- //needs the event loop to process incoming data
- //if not queued, data is incomplete when handshakeReceived is called
- QObjectPrivate::connect(pTcpSocket, &QTcpSocket::readyRead,
- this, &QWebSocketServerPrivate::handshakeReceived,
- Qt::QueuedConnection);
- QObjectPrivate::connect(pTcpSocket, &QTcpSocket::disconnected,
- this, &QWebSocketServerPrivate::onSocketDisconnected);
- }
+ while (m_pTcpServer->hasPendingConnections())
+ handleConnection(m_pTcpServer->nextPendingConnection());
}
/*!
@@ -491,4 +482,17 @@ void QWebSocketServerPrivate::handshakeReceived()
}
}
+void QWebSocketServerPrivate::handleConnection(QTcpSocket *pTcpSocket) const
+{
+ if (Q_LIKELY(pTcpSocket)) {
+ // Use a queued connection because a QSslSocket needs the event loop to process incoming
+ // data. If not queued, data is incomplete when handshakeReceived is called.
+ QObjectPrivate::connect(pTcpSocket, &QTcpSocket::readyRead,
+ this, &QWebSocketServerPrivate::handshakeReceived,
+ Qt::QueuedConnection);
+ QObjectPrivate::connect(pTcpSocket, &QTcpSocket::disconnected,
+ this, &QWebSocketServerPrivate::onSocketDisconnected);
+ }
+}
+
QT_END_NAMESPACE