diff options
| author | Markus Goetz <Markus.Goetz@nokia.com> | 2011-04-05 16:42:33 +0200 |
|---|---|---|
| committer | Markus Goetz <Markus.Goetz@nokia.com> | 2011-05-03 16:34:50 +0200 |
| commit | be4d62d3b70fabbf730566a9040ac731f61539da (patch) | |
| tree | 506d8e226140af13e829ea6e816f0d330206e8ff /src | |
| parent | 856da3ee19a6c0f6c88ecc77b69ad41b4d4e6ffa (diff) | |
QNAM: Improve internal proxyAuthenticationRequired()
Make it independent from the backend architecture
to improve refactorability.
Reviewed-by: Peter Hartmann
Diffstat (limited to 'src')
| -rw-r--r-- | src/network/access/qnetworkaccessbackend.cpp | 2 | ||||
| -rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 13 | ||||
| -rw-r--r-- | src/network/access/qnetworkaccessmanager_p.h | 6 |
3 files changed, 12 insertions, 9 deletions
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp index 2847cd5a502..8a53d2dfa63 100644 --- a/src/network/access/qnetworkaccessbackend.cpp +++ b/src/network/access/qnetworkaccessbackend.cpp @@ -315,7 +315,7 @@ void QNetworkAccessBackend::error(QNetworkReply::NetworkError code, const QStrin void QNetworkAccessBackend::proxyAuthenticationRequired(const QNetworkProxy &proxy, QAuthenticator *authenticator) { - manager->proxyAuthenticationRequired(this, proxy, authenticator); + manager->proxyAuthenticationRequired(proxy, synchronous, authenticator, &reply->lastProxyAuthentication); } #endif diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index a8095835505..34ac17037be 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1088,9 +1088,10 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QAuthenticator *authen } #ifndef QT_NO_NETWORKPROXY -void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBackend *backend, - const QNetworkProxy &proxy, - QAuthenticator *authenticator) +void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(const QNetworkProxy &proxy, + bool synchronous, + QAuthenticator *authenticator, + QNetworkProxy *lastProxyAuthentication) { Q_Q(QNetworkAccessManager); // ### FIXME Tracking of successful authentications @@ -1100,7 +1101,7 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac // proxyAuthenticationRequired gets emitted again // possible solution: some tracking inside the authenticator // or a new function proxyAuthenticationSucceeded(true|false) - if (proxy != backend->reply->lastProxyAuthentication) { + if (proxy != *lastProxyAuthentication) { QNetworkAuthenticationCredential cred = authenticationManager->fetchCachedProxyCredentials(proxy); if (!cred.isNull()) { authenticator->setUser(cred.user); @@ -1111,10 +1112,10 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac // if we emit a signal here in synchronous mode, the user might spin // an event loop, which might recurse and lead to problems - if (backend->isSynchronous()) + if (synchronous) return; - backend->reply->lastProxyAuthentication = proxy; + *lastProxyAuthentication = proxy; emit q->proxyAuthenticationRequired(proxy, authenticator); authenticationManager->cacheProxyCredentials(proxy, authenticator); } diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index a8237b30d2b..f5e13e3a097 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -104,8 +104,10 @@ public: const QAuthenticator *auth = 0); #ifndef QT_NO_NETWORKPROXY - void proxyAuthenticationRequired(QNetworkAccessBackend *backend, const QNetworkProxy &proxy, - QAuthenticator *authenticator); + void proxyAuthenticationRequired(const QNetworkProxy &proxy, + bool synchronous, + QAuthenticator *authenticator, + QNetworkProxy *lastProxyAuthentication); void cacheProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth); QNetworkAuthenticationCredential *fetchCachedProxyCredentials(const QNetworkProxy &proxy, const QAuthenticator *auth = 0); |
