From fcd0c681c7edc9372473fba8586204e9bf68209a Mon Sep 17 00:00:00 2001 From: David Llewellyn-Jones Date: Fri, 28 Jun 2019 14:01:22 +0000 Subject: [PATCH] Ensure stateChanged signal connect matches disconnect A change to the connect signal introduced a lambda function, rather than calling stateChanged directly, so that the disconnect no longer matched the connect. This potentially prevented the disconnect from being applied correctly. This change matches the connect and disconnect up again. --- src/network/access/qnetworkaccessmanager.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 7e4b5bb958..cf7fbec496 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1616,11 +1616,8 @@ void QNetworkAccessManagerPrivate::createSession(const QNetworkConfiguration &co QObject::connect(networkSessionStrongRef.data(), SIGNAL(opened()), q, SIGNAL(networkSessionConnected()), Qt::QueuedConnection); //QueuedConnection is used to avoid deleting the networkSession inside its closed signal QObject::connect(networkSessionStrongRef.data(), SIGNAL(closed()), q, SLOT(_q_networkSessionClosed()), Qt::QueuedConnection); - QObject::connect(networkSessionStrongRef.data(), &QNetworkSession::stateChanged, - q, [this](QNetworkSession::State s) { - qCDebug(lcNetworkAccess) << "QNAM: network session state changed:" << s; - _q_networkSessionStateChanged(s); - }, Qt::QueuedConnection); + QObject::connect(networkSessionStrongRef.data(), SIGNAL(stateChanged(QNetworkSession::State)), + q, SLOT(_q_networkSessionStateChanged(QNetworkSession::State)), Qt::QueuedConnection); QObject::connect(networkSessionStrongRef.data(), SIGNAL(error(QNetworkSession::SessionError)), q, SLOT(_q_networkSessionFailed(QNetworkSession::SessionError))); @@ -1652,6 +1649,7 @@ void QNetworkAccessManagerPrivate::_q_networkSessionClosed() void QNetworkAccessManagerPrivate::_q_networkSessionStateChanged(QNetworkSession::State state) { Q_Q(QNetworkAccessManager); + qCDebug(lcNetworkAccess) << "QNAM: network session state changed:" << state; if ((state == QNetworkSession::Connecting) && (!getNetworkSession())) { qCWarning(lcNetworkAccess) << "QNAM: ignoring Connecting state received after the session closed";