Using http2 testsuite h2spec from here, apart from other failures there are some connected with CONTINUATION frame.
According to those tests it seems that Undertow somehow badly processes CONTINUATION frames with rejecting client endpoint with GOAWAY - COMPRESSION ERROR. Looking into the tests they seem ok and reasonable. They also pass successfully when executed against e.g. https://www.google.com.
Implementation of those tests can be found here.
Tests are basically:
- there is created connection between client and EAP (Undertow server), settings exchange should be included
- headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
- continuation frame(s) is(are) sent then with rest of the data
Expected result: HEADERS frame from server
Actual result: GOAWAY frame, COMPRESSION_ERROR from server
- there is created connection between client and EAP (Undertow server), settings exchange should be included
- headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
- continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
- data frame is sent
Expected result: GOAWAY, PROTOCOL_ERROR from server
Actual result: GOAWAY frame, COMPRESSION_ERROR from server
- there is created connection between client and EAP (Undertow server), settings exchange should be included
- headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
- continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
- continuation frame is sent then the rest of data and END_HEADERS bit set to true now but whole frame is sent to different stream actually
Expected result: GOAWAY, PROTOCOL_ERROR from server
Actual result: GOAWAY frame, COMPRESSION_ERROR from server
- there is created connection between client and EAP (Undertow server), settings exchange should be included
- headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
- continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
- continuation frame is sent then the rest of data and END_HEADERS bit set to true now but whole frame is sent to stream with is 0
Expected result: GOAWAY, PROTOCOL_ERROR from server
Actual result: GOAWAY frame, COMPRESSION_ERROR from server
- is blocked by
-
JBEAP-5765 Upgrade Undertow from 1.4.0.Final to 1.4.3.Final
- Verified
- is cloned by
-
UNDERTOW-824 HTTP2 continuation frame processing in Undertow
- Resolved
- is incorporated by
-
JBEAP-5897 (7.1.0) Upgrade to WildFly Core 3.0.0.Alpha8
- Verified