From 144dd5c2a877452fa95be613c69c912a286fa193 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sat, 16 Nov 2013 21:48:20 +0200 Subject: [PATCH] Correctly detect if the browser supports gzip compression. --- src/webui/httprequestparser.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/webui/httprequestparser.cpp b/src/webui/httprequestparser.cpp index 9ab8be2a0..17350dea1 100644 --- a/src/webui/httprequestparser.cpp +++ b/src/webui/httprequestparser.cpp @@ -162,8 +162,26 @@ Submit Query bool HttpRequestParser::acceptsEncoding() { QString encoding = m_header.value("Accept-Encoding"); - if (!encoding.isEmpty() && encoding.contains("gzip", Qt::CaseInsensitive)) + int pos = encoding.indexOf("gzip", 0, Qt::CaseInsensitive); + if (pos == -1) + return false; + + // Let's see if there's a qvalue of 0.0 following + if (encoding[pos+4] != ';') //there isn't, so it accepts gzip anyway return true; - return false; + //So let's find = and the next comma + pos = encoding.indexOf("=", pos+4, Qt::CaseInsensitive); + int comma_pos = encoding.indexOf(",", pos, Qt::CaseInsensitive); + + QString value; + if (comma_pos == -1) + value = encoding.mid(pos+1, comma_pos); + else + value = encoding.mid(pos+1, comma_pos-(pos+1)); + + if (value.toDouble() == 0.0) + return false; + else + return true; }