Details

      Description

      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:

      1. there is created connection between client and EAP (Undertow server), settings exchange should be included
      2. headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
      3. 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

      1. there is created connection between client and EAP (Undertow server), settings exchange should be included
      2. headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
      3. continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
      4. data frame is sent

      Expected result: GOAWAY, PROTOCOL_ERROR from server
      Actual result: GOAWAY frame, COMPRESSION_ERROR from server

      1. there is created connection between client and EAP (Undertow server), settings exchange should be included
      2. headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
      3. continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
      4. 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

      1. there is created connection between client and EAP (Undertow server), settings exchange should be included
      2. headers frame is sent with END_STREAM bit set to true and END_HEADERS bit set to false
      3. continuation frame is sent then with next bunch of data (not final bunch) and END_HEADERS bit still set to false
      4. 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

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  swd847 Stuart Douglas
                  Reporter:
                  jstourac Jan Stourac
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  2 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: