summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Lysenko <lysenkoalexmail@gmail.com>2018-08-27 16:08:19 +0300
committerAleksey Lysenko <lysenkoalexmail@gmail.com>2018-08-29 07:01:33 +0000
commit3e939546e43ece26d0533fdd01f219e2993ae759 (patch)
tree6e35f0bd3f3029935371cdcc56ea3b7507ff471b
parent4321fd13ac58e5bebe4d564431e9c18b627598bc (diff)
downloadqtwebsockets-3e939546e43ece26d0533fdd01f219e2993ae759.tar.gz
Fix detection of the end of HTTP request headers
Implemented relying only on \r\n\r\n at the end to be sure that HTTP request is fully received. Task-number: QTBUG-70000 Change-Id: I388dca2ce9ef57ef4f4d7a9b6bc22c47ffe42235 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
-rw-r--r--src/websockets/qwebsocketserver_p.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/websockets/qwebsocketserver_p.cpp b/src/websockets/qwebsocketserver_p.cpp
index f3e7eac..3a38c4b 100644
--- a/src/websockets/qwebsocketserver_p.cpp
+++ b/src/websockets/qwebsocketserver_p.cpp
@@ -416,7 +416,9 @@ void QWebSocketServerPrivate::handshakeReceived()
//For Safari, the handshake is delivered at once
//FIXME: For FireFox, the readyRead signal is never emitted
//This is a bug in FireFox (see https://bugzilla.mozilla.org/show_bug.cgi?id=594502)
- if (!pTcpSocket->canReadLine()) {
+
+ // According to RFC822 the body is separated from the headers by a null line (CRLF)
+ if (!pTcpSocket->peek(pTcpSocket->bytesAvailable()).endsWith(QByteArrayLiteral("\r\n\r\n"))) {
return;
}
disconnect(pTcpSocket, &QTcpSocket::readyRead,