diff options
Diffstat (limited to 'src/network')
-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 f27c38c293..283bf86eea 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1115,7 +1115,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 } @@ -1142,6 +1143,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 08c0e72d33..bd3dc3953d 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 @@ -147,6 +148,7 @@ public: QNetworkSession::State lastSessionState; QString networkConfiguration; QNetworkAccessManager::NetworkAccessibility networkAccessible; + int activeReplyCount; bool online; bool initializeSession; #endif |