summaryrefslogtreecommitdiffstats
path: root/src/network/access/qhttpnetworkconnectionchannel.cpp
diff options
context:
space:
mode:
authorMarkus Goetz <markus@woboq.com>2015-09-22 14:26:24 -0400
committerMarkus Goetz (Woboq GmbH) <markus@woboq.com>2015-09-22 20:06:55 +0000
commit63cf5d3d26a6f65938c3cdec1734eac9faaaf8cb (patch)
tree2b2d96381eef0a711cd5a38bb465bcfd2b1a541a /src/network/access/qhttpnetworkconnectionchannel.cpp
parentc28bc5f11361960da1bc94a5ea6566ee0fc8397c (diff)
QNAM: Assign proper channel before sslErrors() emission
There can be a race condition where another channel connects and gets the sslErrors() from the socket first. Then the QSslConfiguration from the wrong socket (the default channel 0's socket) was used. Task-number: QTBUG-18722 Change-Id: Ibbfa48c27f181563745daf540fa792a57cc09682 Reviewed-by: Richard J. Moore <rich@kde.org>
Diffstat (limited to 'src/network/access/qhttpnetworkconnectionchannel.cpp')
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 257aa13718..477cba267b 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -1066,6 +1066,8 @@ void QHttpNetworkConnectionChannel::_q_sslErrors(const QList<QSslError> &errors)
connection->d_func()->pauseConnection();
if (pendingEncrypt && !reply)
connection->d_func()->dequeueRequest(socket);
+ if (reply) // a reply was actually dequeued.
+ reply->d_func()->connectionChannel = this; // set correct channel like in sendRequest() and queueRequest();
if (connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP) {
if (reply)
emit reply->sslErrors(errors);