HTTP proxy engine - accept standard Connection header
authorShane Kearns <shane.kearns@accenture.com>
Wed, 26 Oct 2011 13:45:50 +0000 (14:45 +0100)
committerQt by Nokia <qt-info@nokia.com>
Mon, 31 Oct 2011 19:34:43 +0000 (20:34 +0100)
The Proxy-Connection header is a non standard header, but is widely
used so forming a de-facto standard.
Some proxies use the official Connection header, so we should check
for that in responses. Otherwise https connections over http proxy
fail in case the proxy sends "Connection: close" with the 407 reply.

Task-number: QTBUG-22177
Change-Id: If6cfa4ebb7ac9d97d65b6ddcc8257aee20ac0448
Reviewed-by: Peter Hartmann <peter.hartmann@nokia.com>
src/network/socket/qhttpsocketengine.cpp

index 5c672ec..b62bc05 100644 (file)
@@ -614,6 +614,10 @@ void QHttpSocketEngine::slotSocketReadNotification()
 
         bool willClose;
         QString proxyConnectionHeader = responseHeader.value(QLatin1String("Proxy-Connection"));
+        // Although most proxies use the unofficial Proxy-Connection header, the Connection header
+        // from http spec is also allowed.
+        if (proxyConnectionHeader.isEmpty())
+            proxyConnectionHeader = responseHeader.value(QLatin1String("Connection"));
         proxyConnectionHeader = proxyConnectionHeader.toLower();
         if (proxyConnectionHeader == QLatin1String("close")) {
             willClose = true;