Bug 1562315 Comment 8 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

Dragana and me figure this probably out.

The problem is that we cancel an (h2) transaction on the main thread with e.g. NS_ERROR_PARSED_DATA_CACHED, while we are also going to just read it on the socket thread (already looping onsocketready of the proxy connection).  OnMsgCancelTransaction is never delivered to the socket thread, we start looping because reading the transaction's pipe fails (the error is visible there) and the logic ignores *again = false then.

To fix the regression, we need to call ForceRecv() on the tunneling connection, I added a note to phab.
Dragana and me figure this probably out.

The problem is that we cancel an (h2) transaction on the main thread with e.g. NS_ERROR_PARSED_DATA_CACHED, while we are also going to just read it on the socket thread (already looping onsocketready of the proxy connection).  OnMsgCancelTransaction is never delivered to the socket thread, we start looping because reading the transaction's pipe fails (the error is visible there) and the logic ignores *again = false then.

Note that we get stuck at:
https://searchfox.org/mozilla-central/rev/4436573fa3d5c4311822090e188504c10c916c6f/xpcom/io/nsPipe3.cpp#1641

the returned error is then propagated back to:
https://searchfox.org/mozilla-central/rev/4436573fa3d5c4311822090e188504c10c916c6f/netwerk/protocol/http/Http2Session.cpp#3416

To fix the regression, we need to call ForceRecv() on the tunneling connection, I added a note to phab.

Back to Bug 1562315 Comment 8