summaryrefslogtreecommitdiffstats
path: root/src/network/kernel/qnetworkproxy.cpp
diff options
context:
space:
mode:
authorJulien Brianceau <jbrianceau@nds.com>2012-09-03 13:56:09 +0200
committerQt by Nokia <qt-info@nokia.com>2012-09-07 15:44:31 +0200
commit5b1bc864a91c3bdb02e36e7546dadebabb42fdec (patch)
treed0152be037386301af2a78dbba409bc98857e480 /src/network/kernel/qnetworkproxy.cpp
parent89a962c3a0e119a1faf351f5d3dc4c5c7bccccf3 (diff)
QtNetwork: bypass proxy for local connections
According to Qt doc, "Network proxy is not used if the address used in connectToHost(), bind() or listen() is equivalent to QHostAddress::LocalHost or QHostAddress::LocalHostIPv6. This is not the case in current implementation. Change-Id: I6b8a40c1e8bd8aad9504d8f939b87eda6e93337c Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
Diffstat (limited to 'src/network/kernel/qnetworkproxy.cpp')
-rw-r--r--src/network/kernel/qnetworkproxy.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index 21d5748562..e26374eb0f 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -318,6 +318,18 @@ QList<QNetworkProxy> QGlobalNetworkProxy::proxyForQuery(const QNetworkProxyQuery
QMutexLocker locker(&mutex);
QList<QNetworkProxy> result;
+
+ // don't look for proxies for a local connection
+ QHostAddress parsed;
+ QString hostname = query.url().host();
+ if (hostname == QLatin1String("localhost")
+ || hostname.startsWith(QLatin1String("localhost."))
+ || (parsed.setAddress(hostname)
+ && (parsed.isLoopback()))) {
+ result << QNetworkProxy(QNetworkProxy::NoProxy);
+ return result;
+ }
+
if (!applicationLevelProxyFactory) {
if (applicationLevelProxy
&& applicationLevelProxy->type() != QNetworkProxy::DefaultProxy)