diff options
author | Allan Sandfeld Jensen <allan.jensen@digia.com> | 2014-02-27 12:17:12 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-04 04:35:37 +0100 |
commit | bcf5ea28c19102430f0dc879e8efb2d895dcea3c (patch) | |
tree | bcce2888a8ac63d4f1255c4e3ca76f6b2bc7fa68 /src | |
parent | e7f685002bb0facb222ac13c21ff4a2257ab76cc (diff) |
Remove deleted QNetworkReplies from SPDY queues
We already remove QNetworkReply from most queues, but we also need
to remove it from the SPDY queue. Otherwise we might end up trying
to send an already deleted message.
Change-Id: Ib39bf8f26315b66179755a6f66dbd657576cbbe3
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/network/access/qhttpnetworkconnection.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 6d568220e2..87511076d3 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -864,6 +864,19 @@ void QHttpNetworkConnectionPrivate::removeReply(QHttpNetworkReply *reply) return; } } +#ifndef QT_NO_SSL + // is the reply inside the SPDY pipeline of this channel already? + QMultiMap<int, HttpMessagePair>::iterator it = channels[i].spdyRequestsToSend.begin(); + QMultiMap<int, HttpMessagePair>::iterator end = channels[i].spdyRequestsToSend.end(); + for (; it != end; ++it) { + if (it.value().second == reply) { + channels[i].spdyRequestsToSend.remove(it.key()); + + QMetaObject::invokeMethod(q, "_q_startNextRequest", Qt::QueuedConnection); + return; + } + } +#endif } // remove from the high priority queue if (!highPriorityQueue.isEmpty()) { |