diff options
author | Julien Brianceau <jbrianceau@nds.com> | 2012-09-03 13:56:09 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-09-07 15:44:31 +0200 |
commit | 5b1bc864a91c3bdb02e36e7546dadebabb42fdec (patch) | |
tree | d0152be037386301af2a78dbba409bc98857e480 /src/network | |
parent | 89a962c3a0e119a1faf351f5d3dc4c5c7bccccf3 (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')
-rw-r--r-- | src/network/kernel/qnetworkproxy.cpp | 12 | ||||
-rw-r--r-- | src/network/socket/qabstractsocket.cpp | 9 |
2 files changed, 12 insertions, 9 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) diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp index 7c91022759..a7f9ceb3c4 100644 --- a/src/network/socket/qabstractsocket.cpp +++ b/src/network/socket/qabstractsocket.cpp @@ -906,15 +906,6 @@ bool QAbstractSocketPrivate::flush() */ void QAbstractSocketPrivate::resolveProxy(const QString &hostname, quint16 port) { - QHostAddress parsed; - if (hostname == QLatin1String("localhost") - || hostname.startsWith(QLatin1String("localhost.")) - || (parsed.setAddress(hostname) - && (parsed.isLoopback()))) { - proxyInUse = QNetworkProxy::NoProxy; - return; - } - QList<QNetworkProxy> proxies; if (proxy.type() != QNetworkProxy::DefaultProxy) { |