From: Michael Schuster Date: Thu, 18 Jun 2020 19:48:08 +0000 (+0200) Subject: Fix issue #2108: Default system proxy not working with Account Wizard X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~222^2^2~140 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=902963fa100e420232ac28dd1465e7b6eb0a144c;p=nextcloud-desktop.git Fix issue #2108: Default system proxy not working with Account Wizard Discovered on Windows in conjunction with PAC scripts: - Already configured accounts worked - Fresh client account setup did not work Reason: - Proxy was reset over and over again in Account::setCredentials Signed-off-by: Michael Schuster --- diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp index 692b86a7a..5477edcd9 100644 --- a/src/libsync/account.cpp +++ b/src/libsync/account.cpp @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -161,10 +162,15 @@ void Account::setCredentials(AbstractCredentials *cred) { // set active credential manager QNetworkCookieJar *jar = nullptr; + QNetworkProxy proxy; + if (_am) { jar = _am->cookieJar(); jar->setParent(nullptr); + // Remember proxy (issue #2108) + proxy = _am->proxy(); + _am = QSharedPointer(); } @@ -181,6 +187,9 @@ void Account::setCredentials(AbstractCredentials *cred) if (jar) { _am->setCookieJar(jar); } + if (proxy.type() != QNetworkProxy::DefaultProxy) { + _am->setProxy(proxy); + } connect(_am.data(), SIGNAL(sslErrors(QNetworkReply *, QList)), SLOT(slotHandleSslErrors(QNetworkReply *, QList))); connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired, @@ -237,12 +246,15 @@ void Account::resetNetworkAccessManager() qCDebug(lcAccount) << "Resetting QNAM"; QNetworkCookieJar *jar = _am->cookieJar(); + QNetworkProxy proxy = _am->proxy(); // Use a QSharedPointer to allow locking the life of the QNAM on the stack. // Make it call deleteLater to make sure that we can return to any QNAM stack frames safely. _am = QSharedPointer(_credentials->createQNAM(), &QObject::deleteLater); _am->setCookieJar(jar); // takes ownership of the old cookie jar + _am->setProxy(proxy); // Remember proxy (issue #2108) + connect(_am.data(), SIGNAL(sslErrors(QNetworkReply *, QList)), SLOT(slotHandleSslErrors(QNetworkReply *, QList))); connect(_am.data(), &QNetworkAccessManager::proxyAuthenticationRequired,