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 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>bb10
parent
abb47fc680
commit
14bff46df4
|
|
@ -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()->authenticationManager->clearCache();
|
||||
}
|
||||
|
||||
void QNetworkAccessManagerPrivate::clearConnectionCache(QNetworkAccessManager *manager)
|
||||
{
|
||||
manager->d_func()->objectCache.clear();
|
||||
manager->d_func()->authenticationManager->clearCache();
|
||||
|
||||
manager->d_func()->destroyThread();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -106,6 +106,8 @@ public:
|
|||
|
||||
void clearAccessCache();
|
||||
|
||||
void clearConnectionCache();
|
||||
|
||||
#ifndef QT_NO_NETWORKPROXY
|
||||
QNetworkProxy proxy() const;
|
||||
void setProxy(const QNetworkProxy &proxy);
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -6812,7 +6812,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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue