@quanzhao wrote:
I had used h2spec tool to test http2 rfc7540 for haproxy, but some case is not right.
So how can I do if I want to enable h2 in the haproxy?
Haproxy tested is 1.8.3 and the generic test result is:Generic tests for HTTP/2 server 1. Starting HTTP/2 [send] Raw Data (0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] Error: read tcp 30.40.53.15:62726->106.14.125.167:9443: read: connection reset by peer × 1: Sends a client connection preface -> The endpoint MUST accept client connection preface. Expected: SETTINGS Frame (flags:0x00) Actual: Error: read tcp 30.40.53.15:62726->106.14.125.167:9443: read: connection reset by peer 2. Streams and Multiplexing [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a PRIORITY frame on idle stream Error: read tcp 30.40.53.15:62727->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a WINDOW_UPDATE frame on half-closed (remote) stream Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a PRIORITY frame on half-closed (remote) stream Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a RST_STREAM frame on half-closed (remote) stream Error: read tcp 30.40.53.15:62730->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: Sends a PRIORITY frame on closed stream Error: read tcp 30.40.53.15:62731->106.14.125.167:9443: read: connection reset by peer 3. Frame Definitions 3.1. DATA [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a DATA frame Error: read tcp 30.40.53.15:62732->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends multiple DATA frames Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a DATA frame with padding Error: EOF 3.2. HEADERS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a HEADERS frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a HEADERS frame with padding Error: read tcp 30.40.53.15:62736->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a HEADERS frame with priority Error: EOF 3.3. PRIORITY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a PRIORITY frame with priority 1 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a PRIORITY frame with priority 256 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a PRIORITY frame with stream dependency Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a PRIORITY frame with exclusive Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: Sends a PRIORITY frame for an idle stream, then send a HEADER frame for a lower stream ID Error: EOF 3.4. RST_STREAM [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a RST_STREAM frame Error: EOF 3.5. SETTINGS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a SETTINGS frame Error: EOF 3.7. PING [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a PING frame Error: EOF 3.8. GOAWAY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a GOAWAY frame Error: EOF 3.9. WINDOW_UPDATE [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a WINDOW_UPDATE frame with stream ID 0 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a WINDOW_UPDATE frame with stream ID 1 Error: read tcp 30.40.53.15:62748->106.14.125.167:9443: read: connection reset by peer 3.10. CONTINUATION [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a CONTINUATION frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends multiple CONTINUATION frames Error: EOF 4. HTTP Message Exchanges [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a GET request Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a HEAD request Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a POST request Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a POST request with trailers Error: EOF 5. HPACK [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a indexed header field representation Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a literal header field with incremental indexing - indexed name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a literal header field with incremental indexing - indexed name (with Huffman coding) Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a literal header field with incremental indexing - new name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: Sends a literal header field with incremental indexing - new name (with Huffman coding) Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 6: Sends a literal header field without indexing - indexed name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 7: Sends a literal header field without indexing - indexed name (with Huffman coding) Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 8: Sends a literal header field without indexing - new name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 9: Sends a literal header field without indexing - new name (huffman encoded) Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 10: Sends a literal header field never indexed - indexed name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 11: Sends a literal header field never indexed - indexed name (huffman encoded) Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 12: Sends a literal header field never indexed - new name Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 13: Sends a literal header field never indexed - new name (huffman encoded) Error: read tcp 30.40.53.15:62767->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 14: Sends a dynamic table size update Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 15: Sends multiple dynamic table size update Error: EOF Hypertext Transfer Protocol Version 2 (HTTP/2) 3. Starting HTTP/2 3.5. HTTP/2 Connection Preface [send] Raw Data (0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a) [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) [recv] Error: read tcp 30.40.53.15:62770->106.14.125.167:9443: read: connection reset by peer × 1: Sends client connection preface -> The server connection preface MUST be the first frame the server sends in the HTTP/2 connection. Expected: SETTINGS Frame (flags:0x00) Actual: Error: read tcp 30.40.53.15:62770->106.14.125.167:9443: read: connection reset by peer [send] Raw Data (0x494e56414c494420434f4e4e454354494f4e20505245464143450d0a0d0a) [recv] Connection closed ✔ 2: Sends invalid connection preface 4. HTTP Frames 4.1. Frame Format [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a frame with unknown type Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a frame with undefined flag Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a frame with reserved field bit Error: EOF 4.2. Frame Size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a DATA frame with 2^14 octets in length Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a large size DATA frame that exceeds the SETTINGS_MAX_FRAME_SIZE Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a large size HEADERS frame that exceeds the SETTINGS_MAX_FRAME_SIZE Error: EOF 4.3. Header Compression and Decompression [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends invalid header block fragment Error: read tcp 30.40.53.15:62778->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a PRIORITY frame while sending the header blocks Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a HEADERS frame to another stream while sending the header blocks Error: EOF 5. Streams and Multiplexing 5.1. Stream States [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: idle: Sends a DATA frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: idle: Sends a RST_STREAM frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: idle: Sends a WINDOW_UPDATE frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: idle: Sends a CONTINUATION frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: half closed (remote): Sends a DATA frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 6: half closed (remote): Sends a HEADERS frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 7: half closed (remote): Sends a CONTINUATION frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 8: closed: Sends a DATA frame after sending RST_STREAM frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 9: closed: Sends a HEADERS frame after sending RST_STREAM frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 10: closed: Sends a CONTINUATION frame after sending RST_STREAM frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 11: closed: Sends a DATA frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 12: closed: Sends a HEADERS frame Error: read tcp 30.40.53.15:62792->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 13: closed: Sends a CONTINUATION frame Error: EOF 5.1.1. Stream Identifiers [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends even-numbered stream identifier Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends stream identifier that is numerically smaller than previous Error: EOF 5.1.2. Stream Concurrency [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends HEADERS frames that causes their advertised concurrent stream limit to be exceeded Error: EOF 5.3. Stream Priority 5.3.1. Stream Dependencies [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends HEADERS frame that depend on itself Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends PRIORITY frame that depend on itself Error: EOF 5.4. Error Handling 5.4.1. Connection Error Handling [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends an invalid PING frame for connection close Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends an invalid PING frame to receive GOAWAY frame Error: read tcp 30.40.53.15:62800->106.14.125.167:9443: read: connection reset by peer 5.5. Extending HTTP/2 [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends an unknown extension frame Error: read tcp 30.40.53.15:62801->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends an unknown extension frame in the middle of a header block Error: read tcp 30.40.53.15:62802->106.14.125.167:9443: read: connection reset by peer 6. Frame Definitions 6.1. DATA [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a DATA frame with 0x0 stream identifier Error: read tcp 30.40.53.15:62803->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a DATA frame on the stream that is not in "open" or "half-closed (local)" state Error: read tcp 30.40.53.15:62804->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a DATA frame with invalid pad length Error: EOF 6.2. HEADERS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a HEADERS frame without the END_HEADERS flag, and a PRIORITY frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a HEADERS frame to another stream while sending a HEADERS frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a HEADERS frame with 0x0 stream identifier Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a HEADERS frame with invalid pad length Error: EOF 6.3. PRIORITY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a PRIORITY frame with 0x0 stream identifier Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a PRIORITY frame with a length other than 5 octets Error: EOF 6.4. RST_STREAM [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a RST_STREAM frame with 0x0 stream identifier Error: read tcp 30.40.53.15:62812->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a RST_STREAM frame on a idle stream Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a RST_STREAM frame with a length other than 4 octets Error: EOF 6.5. SETTINGS [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a SETTINGS frame with ACK flag and payload Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a SETTINGS frame with a stream identifier other than 0x0 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a SETTINGS frame with a length other than a multiple of 6 octets Error: EOF 6.5.2. Defined SETTINGS Parameters [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: SETTINGS_ENABLE_PUSH (0x2): Sends the value other than 0 or 1 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: SETTINGS_INITIAL_WINDOW_SIZE (0x4): Sends the value above the maximum flow control window size Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value below the initial value Error: read tcp 30.40.53.15:62820->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: SETTINGS_MAX_FRAME_SIZE (0x5): Sends the value above the maximum allowed frame size Error: read tcp 30.40.53.15:62821->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: Sends a SETTINGS frame with unknown identifier Error: EOF 6.5.3. Settings Synchronization [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends multiple values of SETTINGS_INITIAL_WINDOW_SIZE Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a SETTINGS frame without ACK flag Error: read tcp 30.40.53.15:62825->106.14.125.167:9443: read: connection reset by peer 6.7. PING [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a PING frame Error: read tcp 30.40.53.15:62826->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a PING frame with ACK Error: read tcp 30.40.53.15:62827->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a PING frame with a stream identifier field value other than 0x0 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a PING frame with a length field value other than 8 Error: read tcp 30.40.53.15:62829->106.14.125.167:9443: read: connection reset by peer 6.8. GOAWAY [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a GOAWAY frame with a stream identifier other than 0x0 Error: EOF 6.9. WINDOW_UPDATE [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a WINDOW_UPDATE frame with a flow control window increment of 0 on a stream Error: read tcp 30.40.53.15:62832->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a WINDOW_UPDATE frame with a length other than 4 octets Error: EOF 6.9.1. The Flow-Control Window [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends SETTINGS frame to set the initial window size to 1 and sends HEADERS frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends multiple WINDOW_UPDATE frames increasing the flow control window to above 2^31-1 on a stream Error: EOF 6.9.2. Initial Flow-Control Window Size [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Changes SETTINGS_INITIAL_WINDOW_SIZE after sending HEADERS frame Error: read tcp 30.40.53.15:62839->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a SETTINGS frame for window size to be negative Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a SETTINGS_INITIAL_WINDOW_SIZE settings with an exceeded maximum window size value Error: EOF 6.10. CONTINUATION [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends multiple CONTINUATION frames preceded by a HEADERS frame Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a CONTINUATION frame followed by any frame other than CONTINUATION Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 3: Sends a CONTINUATION frame with 0x0 stream identifier Error: EOF [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 4: Sends a CONTINUATION frame preceded by a HEADERS frame with END_HEADERS flag Error: read tcp 30.40.53.15:62846->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 5: Sends a CONTINUATION frame preceded by a CONTINUATION frame with END_HEADERS flag Error: read tcp 30.40.53.15:62847->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 6: Sends a CONTINUATION frame preceded by a DATA frame Error: EOF 7. Error Codes [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 1: Sends a GOAWAY frame with unknown error code Error: read tcp 30.40.53.15:62849->106.14.125.167:9443: read: connection reset by peer [send] SETTINGS Frame (length:6, flags:0x00, stream_id:0) × 2: Sends a RST_STREAM frame with unknown error code Error: EOF
Posts: 2
Participants: 1