From ba9306ec5a1271275d79b2f48ceb227f79352f33 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 7 Apr 2016 14:40:07 +0200 Subject: 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 --- src/websockets/qwebsocket_p.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src') 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); + } } } -- cgit v1.2.1