-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
None
There have been added some new tests into this third-party HTTP2 testsuite and some of them are failing with current HTTP2 implementation in Undertow, namely:
Generic tests for HTTP/2 server 5. HPACK × 1: Sends a indexed header field representation -> The endpoint MUST accept indexed header field representation Expected: HEADERS Frame (stream_id:1) Actual: Connection closed Hypertext Transfer Protocol Version 2 (HTTP/2) 4. HTTP Frames 4.2. Frame Size × 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE -> The endpoint MUST respond with a connection error of type FRAME_SIZE_ERROR. Expected: GOAWAY Frame (Error Code: FRAME_SIZE_ERROR) Connection closed Actual: DATA Frame (length:1517, flags:0x01, stream_id:1) 5. Streams and Multiplexing 5.1. Stream States × 11: closed: Sends a DATA frame -> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) Connection closed Actual: RST_STREAM Frame (length:4, flags:0x00, stream_id:1) × 12: closed: Sends a HEADERS frame -> The endpoint MUST treat this as a connection error of type STREAM_CLOSED. Expected: GOAWAY Frame (Error Code: STREAM_CLOSED) Connection closed Actual: RST_STREAM Frame (length:4, flags:0x00, stream_id:1) 5.1.1. Stream Identifiers × 2: Sends stream identifier that is numerically smaller than previous -> The endpoint MUST respond with a connection error of type PROTOCOL_ERROR. Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) Connection closed Actual: DATA Frame (length:1517, flags:0x01, stream_id:5) 6. Frame Definitions 6.9. WINDOW_UPDATE 6.9.2. Initial Flow-Control Window Size × 2: Sends a SETTINGS frame for window size to be negative -> The endpoint MUST track the negative flow-control window. Expected: DATA Frame (length:1, flags:0x00, stream_id:1) Actual: Timeout 8. HTTP Message Exchanges 8.1. HTTP Request/Response Exchange 8.1.2. HTTP Header Fields 8.1.2.3. Request Pseudo-Header Fields × 1: Sends a HEADERS frame with empty ":path" pseudo-header field -> The endpoint MUST respond with a stream error of type PROTOCOL_ERROR. Expected: GOAWAY Frame (Error Code: PROTOCOL_ERROR) RST_STREAM Frame (Error Code: PROTOCOL_ERROR) Connection closed Actual: HEADERS Frame (length:86, flags:0x05, stream_id:1) HPACK: Header Compression for HTTP/2 5. Primitive Type Representations 5.2. String Literal Representation × 1: Sends a Huffman-encoded string literal representation with padding longer than 7 bits -> The endpoint MUST treat this as a decoding error. Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) Connection closed Actual: DATA Frame (length:1517, flags:0x01, stream_id:1) 6. Binary Format 6.3. Dynamic Table Size Update × 1: Sends a dynamic table size update larger than the value of SETTINGS_HEADER_TABLE_SIZE -> The endpoint MUST treat this as a decoding error. Expected: GOAWAY Frame (Error Code: COMPRESSION_ERROR) Connection closed Actual: DATA Frame (length:1517, flags:0x01, stream_id:1)
As this testsuite checks HTTP2 implementation to be RFC compliant and we officially support HTTP2 in EAP7.1, we should fix those failing tests.
- clones
-
JBEAP-8925 http2 implementation in Undertow fails some RFC compliancy checks
- Verified