diff --git a/netwerk/protocol/http/Http2Session.cpp b/netwerk/protocol/http/Http2Session.cpp index 9ca303c9a273..fc01eeb52904 100644 --- a/netwerk/protocol/http/Http2Session.cpp +++ b/netwerk/protocol/http/Http2Session.cpp @@ -1011,8 +1011,10 @@ Http2Session::CleanupStream(Http2Stream *aStream, nsresult aResult, pushSource->SetConsumerStream(nullptr); } - if (!aStream->RecvdFin() && !aStream->RecvdReset() && aStream->StreamID()) { - LOG3(("Stream had not processed recv FIN, sending RST code %X\n", aResetCode)); + // don't reset a stream that has recevied a fin or rst + if (!aStream->RecvdFin() && !aStream->RecvdReset() && aStream->StreamID() && + !(mInputFrameFinal && (aStream == mInputFrameDataStream))) { // !(recvdfin with mark pending) + LOG3(("Stream 0x%X had not processed recv FIN, sending RST code %X\n", aStream->StreamID(), aResetCode)); GenerateRstStream(aResetCode, aStream->StreamID()); }