diff options
Diffstat (limited to 'src/network/access')
-rw-r--r-- | src/network/access/qnetworkaccessmanager.cpp | 6 | ||||
-rw-r--r-- | src/network/access/qnetworkaccessmanager_p.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 6a701afc68..f2dc1839b6 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1014,7 +1014,8 @@ void QNetworkAccessManagerPrivate::_q_replyFinished() // If there are no active requests, release our reference to the network session. // It will not be destroyed immediately, but rather when the connection cache is flushed // after 2 minutes. - if (networkSession && q->findChildren<QNetworkReply *>().count() == 1) + activeReplyCount--; + if (networkSession && activeReplyCount == 0) networkSession.clear(); #endif } @@ -1041,6 +1042,9 @@ QNetworkReply *QNetworkAccessManagerPrivate::postProcess(QNetworkReply *reply) * avoid getting a connection error. */ q->connect(reply, SIGNAL(sslErrors(QList<QSslError>)), SLOT(_q_replySslErrors(QList<QSslError>))); #endif +#ifndef QT_NO_BEARERMANAGEMENT + activeReplyCount++; +#endif return reply; } diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h index 2f884f4962..ddacf6857b 100644 --- a/src/network/access/qnetworkaccessmanager_p.h +++ b/src/network/access/qnetworkaccessmanager_p.h @@ -81,6 +81,7 @@ public: networkSession(0), lastSessionState(QNetworkSession::Invalid), networkAccessible(QNetworkAccessManager::Accessible), + activeReplyCount(0), online(false), initializeSession(true), #endif @@ -140,6 +141,7 @@ public: QNetworkSession::State lastSessionState; QString networkConfiguration; QNetworkAccessManager::NetworkAccessibility networkAccessible; + int activeReplyCount; bool online; bool initializeSession; #endif |