From 3e939546e43ece26d0533fdd01f219e2993ae759 Mon Sep 17 00:00:00 2001 From: Aleksey Lysenko Date: Mon, 27 Aug 2018 16:08:19 +0300 Subject: 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 --- src/websockets/qwebsocketserver_p.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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, -- cgit v1.2.1