Skip to content

Instantly share code, notes, and snippets.

@buchgr
Created August 29, 2016 13:17
Show Gist options
  • Save buchgr/9b8bc81592258008641e20e6d96f61c2 to your computer and use it in GitHub Desktop.
Save buchgr/9b8bc81592258008641e20e6d96f61c2 to your computer and use it in GitHub Desktop.
Jakobs-MBP-4:bin buchgr$ ./h2spec -p 8080
3.5. HTTP/2 Connection Preface
✓ Sends invalid connection preface
4.2. Frame Size
× Sends large size frame that exceeds the SETTINGS_MAX_FRAME_SIZE
- The endpoint MUST send a FRAME_SIZE_ERROR error.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
RST_STREAM frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 50, Flags: 0, ErrorCode: PROTOCOL_ERROR)
4.3. Header Compression and Decompression
× Sends invalid header block fragment
- The endpoint MUST terminate the connection with a connection error of type COMPRESSION_ERROR.
Expected: GOAWAY frame (ErrorCode: COMPRESSION_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
✓ Sends Dynamic Table Size Update (RFC 7541, 6.3)
× Encodes Dynamic Table Size Update (RFC 7541, 6.3) after common header fields
- The endpoint MUST terminate the connection with a connection error of type COMPRESSION_ERROR.
Expected: GOAWAY frame (ErrorCode: COMPRESSION_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
5.1. Stream States
✓ idle: Sends a DATA frame
✓ idle: Sends a RST_STREAM frame
✓ idle: Sends a WINDOW_UPDATE frame
✓ idle: Sends a CONTINUATION frame
✓ half closed (remote): Sends a DATA frame
✓ half closed (remote): Sends a HEADERS frame
✓ half closed (remote): Sends a CONTINUATION frame
× closed: Sends a CONTINUATION frame
- The endpoint MUST treat this as a stream error (Section 5.4.2) of type STREAM_CLOSED.
Expected: Stream close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
5.1.1. Stream Identifiers
✓ Sends even-numbered stream identifier
5.1.2. Stream Concurrency
Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded
- Skipped: SETTINGS_MAX_CONCURRENT_STREAMS is unlimited.
5.3. Stream Priority
5.3.1. Stream Dependencies
× Sends HEADERS frame that depend on itself
- The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 40, Flags: 0, ErrorCode: INTERNAL_ERROR)
✓ Sends PRIORITY frame that depend on itself
5.5. Extending HTTP/2
✓ Sends an unknown extension frame
× Sends an unknown extension frame in the middle of a header block
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
6.1. DATA
× Sends a DATA frame with 0x0 stream identifier
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 66, Flags: 0, ErrorCode: INTERNAL_ERROR)
✓ Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state
× Sends a DATA frame with invalid pad length
- The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: RST_STREAM frame (Length: 4, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
6.2. HEADERS
✓ Sends a HEADERS frame followed by any frame other than CONTINUATION
✓ Sends a HEADERS frame followed by a frame on a different stream
✓ Sends a HEADERS frame with 0x0 stream identifier
× Sends a HEADERS frame with invalid pad length
- The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 53, Flags: 0, ErrorCode: INTERNAL_ERROR)
6.3. PRIORITY
× Sends a PRIORITY frame with 0x0 stream identifier
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 8, Flags: 0, ErrorCode: INTERNAL_ERROR)
✓ Sends a PRIORITY frame with a length other than 5 octets
6.4. RST_STREAM
✓ Sends a RST_STREAM frame with 0x0 stream identifier
✓ Sends a RST_STREAM frame on a idle stream
× Sends a RST_STREAM frame with a length other than 4 octets
- The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 177, Flags: 0, ErrorCode: INTERNAL_ERROR)
6.5. SETTINGS
× Sends a SETTINGS frame
- The endpoint MUST sends a SETTINGS frame with ACK.
Expected: SETTINGS frame (Flags: 1)
Actual: GOAWAY frame (Length: 56, Flags: 0, ErrorCode: PROTOCOL_ERROR)
× Sends a SETTINGS frame that is not a zero-length with ACK flag
- The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 54, Flags: 0, ErrorCode: PROTOCOL_ERROR)
✓ Sends a SETTINGS frame with the stream identifier that is not 0x0
✓ Sends a SETTINGS frame with a length other than a multiple of 6 octets
6.5.2. Defined SETTINGS Parameters
✓ SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1
✓ SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size
× SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 48, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
× SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 51, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
6.7. PING
✓ Sends a PING frame
✓ Sends a PING frame with the stream identifier that is not 0x0
✓ Sends a PING frame with a length field value other than 8
6.8. GOAWAY
✓ Sends a GOAWAY frame with the stream identifier that is not 0x0
6.9. WINDOW_UPDATE
✓ Sends a WINDOW_UPDATE frame
✓ Sends a WINDOW_UPDATE frame with a flow control window increment of 0
✓ Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream
✓ Sends a WINDOW_UPDATE frame with a length other than a multiple of 4 octets
6.9.1. The Flow Control Window
✓ Sends multiple WINDOW_UPDATE frames on a connection increasing the flow control window to above 2^31-1
✓ Sends multiple WINDOW_UPDATE frames on a stream increasing the flow control window to above 2^31-1
6.9.2. Initial Flow Control Window Size
✓ Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value
6.10. CONTINUATION
× Sends a CONTINUATION frame
- The endpoint must accept the frame.
Expected: HEADERS frame
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends multiple CONTINUATION frames
- The endpoint must accept the frames.
Expected: HEADERS frame
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame followed by any frame other than CONTINUATION
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame followed by a frame on a different stream
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame with the stream identifier that is 0x0
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
✓ Sends a CONTINUATION frame after the frame other than HEADERS, PUSH_PROMISE or CONTINUATION
8.1. HTTP Request/Response Exchange
× Sends a HEADERS frame as HEAD request
- The endpoint should respond with no DATA frame or empty DATA frame.
Expected: HEADERS frame (Flags: 1)
DATA frame (Length: 0, Flags: 1)
Actual: DATA frame (Length: 24, Flags: 1)
✓ Sends a HEADERS frame containing trailer part
× Sends a second HEADERS frame without the END_STREAM flag
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: Test timeout
8.1.2. HTTP Header Fields
✓ Sends a HEADERS frame that contains the header field name in uppercase letters
8.1.2.1. Pseudo-Header Fields
× Sends a HEADERS frame that contains the pseudo-header field defined for response
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains the invalid pseudo-header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.2. Connection-Specific Header Fields
× Sends a HEADERS frame that contains the connection-specific header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains the TE header field that contain any value other than "trailers"
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.3. Request Pseudo-Header Fields
× Sends a HEADERS frame that omits mandatory pseudo-header fields
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame containing more than one pseudo-header fields with the same name
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.6. Malformed Requests and Responses
× Sends a HEADERS frame that contains the "content-length" header field which does not equal the sum of the DATA frame payload lengths
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 4, Flags: 1)
× Sends a HEADERS frame that contains the "content-length" header field which does not equal the sum of the multiple DATA frame payload lengths
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 4, Flags: 1)
8.2. Server Push
× Sends a PUSH_PROMISE frame
- The endpoint MUST treat the receipt of a PUSH_PROMISE frame as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: Test timeout
70 tests, 37 passed, 1 skipped, 32 failed
===============================================================================
Failed tests
===============================================================================
4.2. Frame Size
× Sends large size frame that exceeds the SETTINGS_MAX_FRAME_SIZE
- The endpoint MUST send a FRAME_SIZE_ERROR error.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
RST_STREAM frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 50, Flags: 0, ErrorCode: PROTOCOL_ERROR)
4.3. Header Compression and Decompression
× Sends invalid header block fragment
- The endpoint MUST terminate the connection with a connection error of type COMPRESSION_ERROR.
Expected: GOAWAY frame (ErrorCode: COMPRESSION_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Encodes Dynamic Table Size Update (RFC 7541, 6.3) after common header fields
- The endpoint MUST terminate the connection with a connection error of type COMPRESSION_ERROR.
Expected: GOAWAY frame (ErrorCode: COMPRESSION_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
5.1. Stream States
× closed: Sends a CONTINUATION frame
- The endpoint MUST treat this as a stream error (Section 5.4.2) of type STREAM_CLOSED.
Expected: Stream close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
5.3. Stream Priority
5.3.1. Stream Dependencies
× Sends HEADERS frame that depend on itself
- The endpoint MUST treat this as a stream error of type PROTOCOL_ERROR
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 40, Flags: 0, ErrorCode: INTERNAL_ERROR)
5.5. Extending HTTP/2
× Sends an unknown extension frame in the middle of a header block
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
6.1. DATA
× Sends a DATA frame with 0x0 stream identifier
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 66, Flags: 0, ErrorCode: INTERNAL_ERROR)
× Sends a DATA frame with invalid pad length
- The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: RST_STREAM frame (Length: 4, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
6.2. HEADERS
× Sends a HEADERS frame with invalid pad length
- The endpoint MUST treat this as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 53, Flags: 0, ErrorCode: INTERNAL_ERROR)
6.3. PRIORITY
× Sends a PRIORITY frame with 0x0 stream identifier
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 8, Flags: 0, ErrorCode: INTERNAL_ERROR)
6.4. RST_STREAM
× Sends a RST_STREAM frame with a length other than 4 octets
- The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 177, Flags: 0, ErrorCode: INTERNAL_ERROR)
6.5. SETTINGS
× Sends a SETTINGS frame
- The endpoint MUST sends a SETTINGS frame with ACK.
Expected: SETTINGS frame (Flags: 1)
Actual: GOAWAY frame (Length: 56, Flags: 0, ErrorCode: PROTOCOL_ERROR)
× Sends a SETTINGS frame that is not a zero-length with ACK flag
- The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR.
Expected: GOAWAY frame (ErrorCode: FRAME_SIZE_ERROR)
Connection close
Actual: GOAWAY frame (Length: 54, Flags: 0, ErrorCode: PROTOCOL_ERROR)
6.5.2. Defined SETTINGS Parameters
× SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 48, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
× SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size
- The endpoint MUST respond with a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 51, Flags: 0, ErrorCode: FRAME_SIZE_ERROR)
6.10. CONTINUATION
× Sends a CONTINUATION frame
- The endpoint must accept the frame.
Expected: HEADERS frame
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends multiple CONTINUATION frames
- The endpoint must accept the frames.
Expected: HEADERS frame
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame followed by any frame other than CONTINUATION
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame followed by a frame on a different stream
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
× Sends a CONTINUATION frame with the stream identifier that is 0x0
- The endpoint MUST treat as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: GOAWAY frame (Length: 52, Flags: 0, ErrorCode: ENHANCE_YOUR_CALM)
8.1. HTTP Request/Response Exchange
× Sends a HEADERS frame as HEAD request
- The endpoint should respond with no DATA frame or empty DATA frame.
Expected: HEADERS frame (Flags: 1)
DATA frame (Length: 0, Flags: 1)
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a second HEADERS frame without the END_STREAM flag
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: Test timeout
8.1.2. HTTP Header Fields
8.1.2.1. Pseudo-Header Fields
× Sends a HEADERS frame that contains the pseudo-header field defined for response
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains the invalid pseudo-header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains a pseudo-header field that appears in a header block after a regular header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.2. Connection-Specific Header Fields
× Sends a HEADERS frame that contains the connection-specific header field
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame that contains the TE header field that contain any value other than "trailers"
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.3. Request Pseudo-Header Fields
× Sends a HEADERS frame that omits mandatory pseudo-header fields
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
× Sends a HEADERS frame containing more than one pseudo-header fields with the same name
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 24, Flags: 1)
8.1.2.6. Malformed Requests and Responses
× Sends a HEADERS frame that contains the "content-length" header field which does not equal the sum of the DATA frame payload lengths
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 4, Flags: 1)
× Sends a HEADERS frame that contains the "content-length" header field which does not equal the sum of the multiple DATA frame payload lengths
- The endpoint MUST respond with a stream error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
RST_STREAM frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: DATA frame (Length: 4, Flags: 1)
8.2. Server Push
× Sends a PUSH_PROMISE frame
- The endpoint MUST treat the receipt of a PUSH_PROMISE frame as a connection error of type PROTOCOL_ERROR.
Expected: GOAWAY frame (ErrorCode: PROTOCOL_ERROR)
Connection close
Actual: Test timeout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment