summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-11-04 16:06:40 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-11-04 16:06:40 (GMT)
commit4cfd1f19fdcd1e61aa50feed5eb8228afff94e66 (patch)
tree159a2f90ff7bb016fd166f1b18826aed2a460ac5 /src/network
parent953ff11a1b424dd288b6504c5a6f918acaebaa60 (diff)
parent1a7a1172d048108c30a9890ce9477686711ad756 (diff)
downloadQt-4cfd1f19fdcd1e61aa50feed5eb8228afff94e66.zip
Qt-4cfd1f19fdcd1e61aa50feed5eb8228afff94e66.tar.gz
Qt-4cfd1f19fdcd1e61aa50feed5eb8228afff94e66.tar.bz2
Merge branch 4.7 into qt-master-from-4.7
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp7
-rw-r--r--src/network/kernel/qauthenticator.cpp10
2 files changed, 14 insertions, 3 deletions
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 1ef58d8..1ce162c 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -374,6 +374,13 @@ bool QHttpNetworkConnectionPrivate::handleAuthenticateChallenge(QAbstractSocket
// - If withCredentials has been set to false (e.g. by QtWebKit for a cross-origin XMLHttpRequest) then
// we need to bail out if authentication is required.
if (priv->phase == QAuthenticatorPrivate::Done || !reply->request().withCredentials()) {
+ // Reset authenticator so the next request on that channel does not get messed up
+ auth = 0;
+ if (isProxy)
+ channels[i].proxyAuthenticator = QAuthenticator();
+ else
+ channels[i].authenticator = QAuthenticator();
+
// authentication is cancelled, send the current contents to the user.
emit channels[i].reply->headerChanged();
emit channels[i].reply->readyRead();
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 220f7da..73f6b94 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -164,9 +164,13 @@ QAuthenticator &QAuthenticator::operator=(const QAuthenticator &other)
{
if (d == other.d)
return *this;
- detach();
- d->user = other.d->user;
- d->password = other.d->password;
+
+ if (d && !d->ref.deref())
+ delete d;
+
+ d = other.d;
+ if (d)
+ d->ref.ref();
return *this;
}