Uploaded image for project: 'JBoss Enterprise Application Platform'
  1. JBoss Enterprise Application Platform
  2. JBEAP-5924

HTTP2 continuation frame processing in Undertow

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 7.1.0.DR5
    • 7.1.0.DR4
    • Undertow
    • None

      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

              sdouglas1@redhat.com Stuart Douglas (Inactive)
              jstourac@redhat.com Jan Stourac
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: