From b93cebacb2d1b1addc0bbcefb02b47b7eb41c920 Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Sun, 18 Mar 2012 17:16:14 +0200 Subject: [PATCH] Fix important Web UI bug (HTTP request parsing bug) (cherry picked from commit bdaf16123f7c1c0b09b06e8e2cc39c700fbbcc82) --- src/webui/httpconnection.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/webui/httpconnection.cpp b/src/webui/httpconnection.cpp index 07ff9261e..2fcd68b22 100644 --- a/src/webui/httpconnection.cpp +++ b/src/webui/httpconnection.cpp @@ -84,6 +84,7 @@ void HttpConnection::read() { // Parse HTTP request header int header_end = input.indexOf("\r\n\r\n"); if (header_end < 0) { + qDebug() << "Partial request: \n" << input; // Partial request waiting for the rest return; } @@ -101,7 +102,6 @@ void HttpConnection::read() { if (m_parser.header().hasContentLength()) { const int expected_length = m_parser.header().contentLength(); QByteArray message = input.mid(header_end + 4, expected_length); - input = input.mid(header_end + 4 + expected_length); if (expected_length > 100000) { qWarning() << "Bad request: message too long"; @@ -113,10 +113,13 @@ void HttpConnection::read() { if (message.length() < expected_length) { // Message too short, waiting for the rest + qDebug() << "Partial message:\n" << message; return; } m_parser.writeMessage(message); + + input = input.mid(header_end + 4 + expected_length); } else { input.clear(); }