summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@theqtcompany.com>2016-04-07 14:40:07 +0200
committerKai Koehne <kai.koehne@theqtcompany.com>2016-04-07 13:04:13 +0000
commitba9306ec5a1271275d79b2f48ceb227f79352f33 (patch)
treea18b37883ed1dc568029732e48fd56e3989a6bc8
parenta126127f2c2bc1c8f4c7e44ea543057397bbdafa (diff)
downloadqtwebsockets-ba9306ec5a1271275d79b2f48ceb227f79352f33.tar.gz
Fix possible hang on handshake
processHandShake operates on complete lines. If the data available does not contain the full handshake message, the loop will therefore never return. Task-number: QTBUG-51001 Change-Id: Ie87f5b5dee01116f463e84f06feab502ff5ac563 Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
-rw-r--r--src/websockets/qwebsocket_p.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
index 0eadc93..2fd52fe 100644
--- a/src/websockets/qwebsocket_p.cpp
+++ b/src/websockets/qwebsocket_p.cpp
@@ -1142,10 +1142,13 @@ void QWebSocketPrivate::processData()
{
Q_ASSERT(m_pSocket);
while (m_pSocket->bytesAvailable()) {
- if (state() == QAbstractSocket::ConnectingState)
+ if (state() == QAbstractSocket::ConnectingState) {
+ if (!m_pSocket->canReadLine())
+ break;
processHandshake(m_pSocket);
- else
+ } else {
m_dataProcessor.process(m_pSocket);
+ }
}
}