summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
Diffstat (limited to 'src/network')
-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 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