summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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))