141 lines
6.2 KiB
Diff
141 lines
6.2 KiB
Diff
From 523c61571e234865e411d823366dc87d62fe50ab Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Sebastian=20L=C3=B6sch?= <Sebastian.Loesch@governikus.de>
|
|
Date: Wed, 10 Aug 2016 16:51:34 +0200
|
|
Subject: Introduce QNetworkAccessManager::clearConnectionCache()
|
|
|
|
Sometimes it is desirable to use a new connection but keep already
|
|
entered user credentials for usability reasons. This is now possible by
|
|
clearing the connection cache (but keeping the authentication cache).
|
|
|
|
Change-Id: I2f5f64836ce19f81c8525701783a3da823dd468e
|
|
---
|
|
src/network/access/qnetworkaccessmanager.cpp | 25 +++++++++++++++++++---
|
|
src/network/access/qnetworkaccessmanager.h | 2 ++
|
|
src/network/access/qnetworkaccessmanager_p.h | 3 ++-
|
|
.../access/qnetworkreply/tst_qnetworkreply.cpp | 3 ++-
|
|
.../tst_network_remote_stresstest.cpp | 3 ++-
|
|
.../network_stresstest/tst_network_stresstest.cpp | 3 ++-
|
|
6 files changed, 32 insertions(+), 7 deletions(-)
|
|
|
|
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.cpp y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
|
index 6d5b2400f1..b763547a15 100644
|
|
--- x/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
|
+++ y/qtbase/src/network/access/qnetworkaccessmanager.cpp
|
|
@@ -1352,10 +1352,26 @@ QStringList QNetworkAccessManager::supportedSchemesImplementation() const
|
|
|
|
This function is useful for doing auto tests.
|
|
|
|
+ \sa clearConnectionCache()
|
|
*/
|
|
void QNetworkAccessManager::clearAccessCache()
|
|
{
|
|
- QNetworkAccessManagerPrivate::clearCache(this);
|
|
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(this);
|
|
+ QNetworkAccessManagerPrivate::clearConnectionCache(this);
|
|
+}
|
|
+
|
|
+/*!
|
|
+ \since 5.9
|
|
+
|
|
+ Flushes the internal cache of network connections.
|
|
+ In contrast to clearAccessCache() the authentication data
|
|
+ is preserved.
|
|
+
|
|
+ \sa clearAccessCache()
|
|
+*/
|
|
+void QNetworkAccessManager::clearConnectionCache()
|
|
+{
|
|
+ QNetworkAccessManagerPrivate::clearConnectionCache(this);
|
|
}
|
|
|
|
void QNetworkAccessManagerPrivate::_q_replyFinished()
|
|
@@ -1552,11 +1568,14 @@ QList<QNetworkProxy> QNetworkAccessManagerPrivate::queryProxy(const QNetworkProx
|
|
}
|
|
#endif
|
|
|
|
-void QNetworkAccessManagerPrivate::clearCache(QNetworkAccessManager *manager)
|
|
+void QNetworkAccessManagerPrivate::clearAuthenticationCache(QNetworkAccessManager *manager)
|
|
{
|
|
- manager->d_func()->objectCache.clear();
|
|
manager->d_func()->authenticationManager->clearCache();
|
|
+}
|
|
|
|
+void QNetworkAccessManagerPrivate::clearConnectionCache(QNetworkAccessManager *manager)
|
|
+{
|
|
+ manager->d_func()->objectCache.clear();
|
|
manager->d_func()->destroyThread();
|
|
}
|
|
|
|
diff --git x/qtbase/src/network/access/qnetworkaccessmanager.h y/qtbase/src/network/access/qnetworkaccessmanager.h
|
|
index 4b8c4ddf0e..649013cced 100644
|
|
--- x/qtbase/src/network/access/qnetworkaccessmanager.h
|
|
+++ y/qtbase/src/network/access/qnetworkaccessmanager.h
|
|
@@ -106,6 +106,8 @@ public:
|
|
|
|
void clearAccessCache();
|
|
|
|
+ void clearConnectionCache();
|
|
+
|
|
#ifndef QT_NO_NETWORKPROXY
|
|
QNetworkProxy proxy() const;
|
|
void setProxy(const QNetworkProxy &proxy);
|
|
diff --git x/qtbase/src/network/access/qnetworkaccessmanager_p.h y/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
|
index bb4641ab8b..b4b5e6a789 100644
|
|
--- x/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
|
+++ y/qtbase/src/network/access/qnetworkaccessmanager_p.h
|
|
@@ -202,7 +202,8 @@ public:
|
|
QNetworkAccessCache objectCache;
|
|
static inline QNetworkAccessCache *getObjectCache(QNetworkAccessBackend *backend)
|
|
{ return &backend->manager->objectCache; }
|
|
- Q_AUTOTEST_EXPORT static void clearCache(QNetworkAccessManager *manager);
|
|
+ Q_AUTOTEST_EXPORT static void clearAuthenticationCache(QNetworkAccessManager *manager);
|
|
+ Q_AUTOTEST_EXPORT static void clearConnectionCache(QNetworkAccessManager *manager);
|
|
#ifndef QT_NO_BEARERMANAGEMENT
|
|
Q_AUTOTEST_EXPORT static const QWeakPointer<const QNetworkSession> getNetworkSession(const QNetworkAccessManager *manager);
|
|
#endif
|
|
diff --git x/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp y/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
|
index 649278d48b..c555cd8fa0 100644
|
|
--- x/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
|
+++ y/qtbase/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
|
|
@@ -6797,7 +6797,8 @@ void tst_QNetworkReply::authenticationCacheAfterCancel()
|
|
// QTBUG-23136 workaround (needed even with danted v1.1.19):
|
|
if (proxy.port() == 1081) {
|
|
#ifdef QT_BUILD_INTERNAL
|
|
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
|
#else
|
|
return;
|
|
#endif
|
|
diff --git x/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp y/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
|
index 05ede9da99..99e3d148df 100644
|
|
--- x/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
|
+++ y/qtbase/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
|
|
@@ -147,7 +147,8 @@ void tst_NetworkRemoteStressTest::init()
|
|
void tst_NetworkRemoteStressTest::clearManager()
|
|
{
|
|
#ifdef QT_BUILD_INTERNAL
|
|
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
|
manager.setProxy(QNetworkProxy());
|
|
manager.setCache(0);
|
|
#endif
|
|
diff --git x/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp y/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
|
index e3c76ea11b..d46703c671 100644
|
|
--- x/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
|
+++ y/qtbase/tests/manual/network_stresstest/tst_network_stresstest.cpp
|
|
@@ -138,7 +138,8 @@ void tst_NetworkStressTest::init()
|
|
void tst_NetworkStressTest::clearManager()
|
|
{
|
|
#ifdef QT_BUILD_INTERNAL
|
|
- QNetworkAccessManagerPrivate::clearCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearAuthenticationCache(&manager);
|
|
+ QNetworkAccessManagerPrivate::clearConnectionCache(&manager);
|
|
manager.setProxy(QNetworkProxy());
|
|
manager.setCache(0);
|
|
#endif
|
|
--
|
|
2.11.0
|
|
|