void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBackend *backend, const QNetworkProxy &proxy, QAuthenticator *authenticator) { Q_Q(QNetworkAccessManager); // ### FIXME Tracking of successful authentications // This code is a bit broken right now for SOCKS authentication // first request: proxyAuthenticationRequired gets emitted, credentials gets saved // second request: (proxy != backend->reply->lastProxyAuthentication) does not evaluate to true, // proxyAuthenticationRequired gets emitted again // possible solution: some tracking inside the authenticator // or a new function proxyAuthenticationSucceeded(true|false) if (proxy != backend->reply->lastProxyAuthentication) { QNetworkAuthenticationCredential *cred = fetchCachedCredentials(proxy); if (cred) { authenticator->setUser(cred->user); authenticator->setPassword(cred->password); return; } } backend->reply->lastProxyAuthentication = proxy; emit q->proxyAuthenticationRequired(proxy, authenticator); addCredentials(proxy, authenticator); }
void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBackend *backend, const QNetworkProxy &proxy, QAuthenticator *authenticator) { Q_Q(QNetworkAccessManager); if (proxy != backend->reply->lastProxyAuthentication) { QNetworkAuthenticationCredential *cred = fetchCachedCredentials(proxy); if (cred) { authenticator->setUser(cred->user); authenticator->setPassword(cred->password); return; } } backend->reply->lastProxyAuthentication = proxy; emit q->proxyAuthenticationRequired(proxy, authenticator); addCredentials(proxy, authenticator); }
void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend *backend, QAuthenticator *authenticator) { Q_Q(QNetworkAccessManager); // FIXME: Add support for domains (i.e., the leading path) QUrl url = backend->reply->url; // don't try the cache for the same URL twice in a row // being called twice for the same URL means the authentication failed if (url != backend->reply->urlForLastAuthentication) { QNetworkAuthenticationCredential *cred = fetchCachedCredentials(url, authenticator); if (cred) { authenticator->setUser(cred->user); authenticator->setPassword(cred->password); backend->reply->urlForLastAuthentication = url; return; } } backend->reply->urlForLastAuthentication = url; emit q->authenticationRequired(backend->reply->q_func(), authenticator); addCredentials(url, authenticator); }