private void ProcessRstStreamFrame(FrameHeader frameHeader) { Debug.Assert(frameHeader.Type == FrameType.RstStream); if (frameHeader.Length != FrameHeader.RstStreamLength) { throw new Http2ProtocolException(Http2ProtocolErrorCode.FrameSizeError); } if (frameHeader.StreamId == 0) { throw new Http2ProtocolException(Http2ProtocolErrorCode.ProtocolError); } Http2Stream http2Stream = GetStream(frameHeader.StreamId); if (http2Stream == null) { // Ignore invalid stream ID, as per RFC _incomingBuffer.Discard(frameHeader.Length); return; } // CONSIDER: We ignore the error code in the RST_STREAM frame. // We could read this and report it to the user as part of the request exception. http2Stream.OnResponseAbort(); _incomingBuffer.Discard(frameHeader.Length); }