summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp6
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h2
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