diff options
Diffstat (limited to 'src/network/kernel/qnetworkproxy_generic.cpp')
-rw-r--r-- | src/network/kernel/qnetworkproxy_generic.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/network/kernel/qnetworkproxy_generic.cpp b/src/network/kernel/qnetworkproxy_generic.cpp index 66053b0b47..61aedbe4fb 100644 --- a/src/network/kernel/qnetworkproxy_generic.cpp +++ b/src/network/kernel/qnetworkproxy_generic.cpp @@ -91,7 +91,23 @@ QList<QNetworkProxy> QNetworkProxyFactory::systemProxyForQuery(const QNetworkPro if (ignoreProxyFor(query)) return proxyList << QNetworkProxy::NoProxy; - QByteArray proxy_env = qgetenv("http_proxy"); + // No need to care about casing here, QUrl lowercases values already + const QString queryProtocol = query.protocolTag(); + QByteArray proxy_env; + + if (queryProtocol == QLatin1String("http")) + proxy_env = qgetenv("http_proxy"); + else if (queryProtocol == QLatin1String("https")) + proxy_env = qgetenv("https_proxy"); + else if (queryProtocol == QLatin1String("ftp")) + proxy_env = qgetenv("ftp_proxy"); + else + proxy_env = qgetenv("all_proxy"); + + // Fallback to http_proxy is no protocol specific proxy was found + if (proxy_env.isEmpty()) + proxy_env = qgetenv("http_proxy"); + if (!proxy_env.isEmpty()) { QUrl url = QUrl(QString::fromLocal8Bit(proxy_env)); if (url.scheme() == QLatin1String("socks5")) { |