Details
-
Bug
-
Resolution: Done
-
P2: Important
-
5.6.2, 5.7.1, 5.8.0, 5.9.1
-
None
-
9193b6cc8505244a9f1af9706032f8c62142f75a
Description
There's another issue with HTTP request pipelining which can result in some QNetworkReply content getting swapped between requests, similar to other issues already reported (e.g. QTBUG-24875).
This particular one occurs when a request repeatedly fails due to a socket error, so that the channel socket connection eventually gets closed. While the pipelined requests are correctly requeued when the failed request is initially resent (up to the maximum attempts), the requeuing of the pipelined requests is missing when the channel socket is finally closed. This causes a mismatch in the reply being assigned when a subsequent successful request is run on the same channel, as the old pipelined requests are incorrectly reused.
While we don't have a test program to reproduce the issue, we were able to observe it while connecting to AWS and then isolate it through extra logging in QHttpNetworkConnectionChannel. We have a patch to fix the issue as well. (will be uploaded to gerrit)