Details
-
Technical task
-
Resolution: Fixed
-
Not Evaluated
-
None
-
Foundation Sprint 69, Foundation Sprint 70, Foundation Sprint 71, Foundation Sprint 72, Foundation Sprint 73, Foundation Sprint 74, Foundation Sprint 75, Foundation Sprint 76, Foundation Sprint 101, Foundations Sprint 102, Foundation Sprint 103, Foundation Sprint 104, Foundation Sprint 105, Foundation Sprint 106, Foundation Sprint 107, Foundation Sprint 108, Foundation Sprint 109, Foundation Sprint 110, Foundation Sprint 111, Foundation Sprint 112, Foundation Sprint 113, Foundation Sprint 114
-
d17d26094 (dev), a3e4a7eec (6.8)
Description
RST_STREAM frames are used to immediately terminate a stream. Add tests to ensure that they work properly.
Reception of RST_STREAM:
- Close a stream immediately upon reception of a RST_STREAM frame.
- Send a GOAWAY(PROTOCOL ERROR) if stream id is 0x00 or stream is in idle state.
- Send a GOAWAY(FRAME_SIZE_ERROR) if size of frame size is other than 4.
- Never respond to a RST_STREAM with a RST_STREAM or looping might occur.
Sending of RST_STREAM:
- Ensure that streams are half-closed-remote or closed after receiving a frame with END_STREAM flag set. Send RST_STREAM with error code STREAM_CLOSED if receiving DATA frames after this.
- Send RST_STREAM with error code PROTOCOL_ERROR if receiving malformed messages (8.1.1 of RFC 9113).
- Look through the handling of each incoming frame type in qhttp2connection.cpp to ensure that RST_STREAM is sent where a stream error MUST be sent according to RFC 9113.