diff options
author | Oleksandr Tymoshenko <gonzo@bluezbox.com> | 2016-05-19 11:34:05 -0700 |
---|---|---|
committer | Oleksandr Tymoshenko <gonzo@bluezbox.com> | 2016-06-20 21:28:10 +0000 |
commit | e66dcd51d0e5517e88cd59912fd08501522a2902 (patch) | |
tree | 005490ee60e4bbebeafc493c45c67e511393dd7f /src/websockets | |
parent | 04f50e048ff907885ac648782ef293d7aef66ace (diff) | |
download | qtwebsockets-e66dcd51d0e5517e88cd59912fd08501522a2902.tar.gz |
Fixed erroneous detection of server disconnect condition
QAbstractSocket::atEnd does not check actual connection state it
only checks if data is ready to be read. Under some conditions
(e.g. slow network) data may not be available yet but it doesn't
mean the server dropped connection. When more data comes FSM will
pick it up and handle as expected. The right way to check disconnect
is to check for actual socket state.
Task-number: QTBUG-51069
Change-Id: I17d7110fbefdba2d5378a71935ab5923f8c1bf3e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/websockets')
-rw-r--r-- | src/websockets/qwebsocket_p.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp index 2fd52fe..3df969e 100644 --- a/src/websockets/qwebsocket_p.cpp +++ b/src/websockets/qwebsocket_p.cpp @@ -975,7 +975,7 @@ void QWebSocketPrivate::processHandshake(QTcpSocket *pSocket) } if (m_handshakeState != ParsingHeaderState) { - if (pSocket->atEnd()) { + if (pSocket->state() != QAbstractSocket::ConnectedState) { errorDescription = QWebSocket::tr("QWebSocketPrivate::processHandshake: Connection closed while reading header."); break; } |