Http2: Remove errored-out requests from queue
The requests will remove themselves once they get deleted but since the deletion is done through a _queued_ invokeMethod to 'deleteLater' we will call QHttpNetworkConnection::_q_startNextRequest first which may end up starting a reconnect of the TCP socket which we had the error on. In this specific instance it manifested as a race condition where we either don't get a proxyAuthorizationRequired signal at all (it was emitted while we didn't have any valid replies), or we get the signal emitted too late and it gets emitted on whatever the next reply was. Task-number: QTBUG-88417 Pick-to: 5.15 6.0 Change-Id: If3f8ececc5550f1868c90124559cb8e3029646d8 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
This commit is contained in:
parent
734c8aa9d9
commit
65bcac95a7
@ -1122,6 +1122,7 @@ void QHttpNetworkConnectionChannel::_q_error(QAbstractSocket::SocketError socket
|
||||
Q_ASSERT(currentReply);
|
||||
emit currentReply->finishedWithError(errorCode, errorString);
|
||||
}
|
||||
h2RequestsToSend.clear();
|
||||
}
|
||||
|
||||
// send the next request
|
||||
|
@ -1,16 +1,4 @@
|
||||
# See qtbase/src/testlib/qtestblacklist.cpp for format
|
||||
[authenticationCacheAfterCancel]
|
||||
windows-7sp1
|
||||
windows-10 msvc-2015
|
||||
|
||||
# QTBUG-88417
|
||||
[authenticationCacheAfterCancel:https+socksauth]
|
||||
ubuntu-20.04
|
||||
|
||||
# QTBUG-88417
|
||||
[authenticationCacheAfterCancel:https+proxyauth]
|
||||
ubuntu-20.04
|
||||
|
||||
[backgroundRequestInterruption]
|
||||
opensuse-leap
|
||||
windows-10 msvc-2015
|
||||
|
Loading…
Reference in New Issue
Block a user