summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@theqtcompany.com>2015-07-22 12:17:20 +0200
committerKai Koehne <kai.koehne@theqtcompany.com>2015-08-05 11:37:47 +0000
commit79a9d2e7d6675f3216c2f3299b142599df2379ad (patch)
tree647f65e03f9d553a39a63990a453486aaaf57535
parentd343cd20410ecb2741c85877c8203579dc7c227d (diff)
Fix usage of system proxy with credentials
So far we've been using the entered credentials only for custom proxies on Windows and OS X. If one selected 'System Proxy' we asked or the credentials, but tried again without setting them. This fixes a regression introduced in 2.0, where we started to interactively ask for credentials. Task-number: QTBUG-46547 Change-Id: If059a9c68a0976db0453abdc795d9546c4b3aa4a Reviewed-by: Niels Weber <niels.weber@theqtcompany.com> Reviewed-by: Karsten Heimrich <karsten.heimrich@theqtcompany.com>
-rw-r--r--Changelog1
-rw-r--r--src/libs/installer/packagemanagerproxyfactory.cpp14
2 files changed, 14 insertions, 1 deletions
diff --git a/Changelog b/Changelog
index da1e7a453..4eef4bccd 100644
--- a/Changelog
+++ b/Changelog
@@ -1,6 +1,7 @@
2.0.2
- Fix .dat file that gets deleted after multiple component changes on Windows.
- Fix maintenance tool upgrade on OS X.
+- Fix handling of system proxy with credentials. (QTBUG-46547)
- Unify selection of language for translations. (QTIFW-390)
- Fix return value of component.installAction() when updating. (QTIFW-727)
- Documentation updates.
diff --git a/src/libs/installer/packagemanagerproxyfactory.cpp b/src/libs/installer/packagemanagerproxyfactory.cpp
index 15e18c889..5c56988af 100644
--- a/src/libs/installer/packagemanagerproxyfactory.cpp
+++ b/src/libs/installer/packagemanagerproxyfactory.cpp
@@ -75,7 +75,19 @@ QList<QNetworkProxy> PackageManagerProxyFactory::queryProxy(const QNetworkProxyQ
proxyUrl.userName(), proxyUrl.password());
}
#endif
- return QNetworkProxyFactory::systemProxyForQuery(query);
+ QList<QNetworkProxy> systemProxies = systemProxyForQuery(query);
+
+ auto proxyIter = systemProxies.begin();
+ for (; proxyIter != systemProxies.end(); ++proxyIter) {
+ QNetworkProxy &proxy = *proxyIter;
+ auto p = std::find_if(m_proxyCredentials.constBegin(), m_proxyCredentials.constEnd(),
+ FindProxyCredential(proxy.hostName(), proxy.port()));
+ if (p != m_proxyCredentials.constEnd()) {
+ proxy.setUser(p->user);
+ proxy.setPassword(p->password);
+ }
+ }
+ return systemProxies;
}
if ((settings.proxyType() == Settings::NoProxy))