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

Undertow fails when parsing HTTP/2 Settings frame

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Blocker Blocker
    • 7.0.0.DR9
    • 7.0.0.DR8
    • Undertow
    • None
    • Hide
      1. Enable http2 for http listener
      2. start EAP with enable HTTP/2
      3. Create upgrade request to HTTP/2 providing non empty settings frame, e.g. [1] (you can use netty or curl to do so).
      4. Parsing of HTTP/2 settings fails

      [1]
      GET / HTTP/1.1
      Host: 127.0.0.1:8080
      Connection: Upgrade, HTTP2-Settings
      Upgrade: h2c
      HTTP2-Settings: AAMAAABkAAQAAP__

      Show
      Enable http2 for http listener start EAP with enable HTTP/2 Create upgrade request to HTTP/2 providing non empty settings frame, e.g. [1] (you can use netty or curl to do so). Parsing of HTTP/2 settings fails [1] GET / HTTP/1.1 Host: 127.0.0.1:8080 Connection: Upgrade, HTTP2-Settings Upgrade: h2c HTTP2-Settings: AAMAAABkAAQAAP__

      When creating HTTP/2 connection over plain "http", Undertow fails to parse settings frame resulting in [1].

      [1]

      15:37:31,289 ERROR [io.undertow.request] (default I/O-2) Undertow request failed HttpServerExchange{ GET /}: java.lang.RuntimeException: java.io.IOException: UT000111: Parser did not make progress
      	at io.undertow.protocols.http2.Http2Channel.<init>(Http2Channel.java:189)
      	at io.undertow.server.protocol.http2.Http2UpgradeHandler$1.handleUpgrade(Http2UpgradeHandler.java:61)
      	at io.undertow.server.protocol.http.HttpReadListener.exchangeComplete(HttpReadListener.java:350)
      	at io.undertow.server.protocol.http.HttpServerConnection.exchangeComplete(HttpServerConnection.java:225)
      	at io.undertow.server.HttpServerExchange.invokeExchangeCompleteListeners(HttpServerExchange.java:1196)
      	at io.undertow.server.HttpServerExchange.terminateResponse(HttpServerExchange.java:1426)
      	at io.undertow.server.Connectors.terminateResponse(Connectors.java:100)
      	at io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:197)
      	at io.undertow.server.protocol.http.HttpTransferEncoding$3.handleEvent(HttpTransferEncoding.java:195)
      	at io.undertow.conduits.ChunkedStreamSinkConduit.invokeFinishListener(ChunkedStreamSinkConduit.java:291)
      	at io.undertow.conduits.ChunkedStreamSinkConduit.flush(ChunkedStreamSinkConduit.java:263)
      	at org.xnio.conduits.ConduitStreamSinkChannel.flush(ConduitStreamSinkChannel.java:162)
      	at io.undertow.channels.DetachableStreamSinkChannel.flush(DetachableStreamSinkChannel.java:119)
      	at io.undertow.server.HttpServerExchange.closeAndFlushResponse(HttpServerExchange.java:1575)
      	at io.undertow.server.HttpServerExchange.endExchange(HttpServerExchange.java:1553)
      	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:215)
      	at io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest(HttpReadListener.java:227)
      	at io.undertow.server.protocol.http.HttpReadListener.handleEvent(HttpReadListener.java:128)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:143)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:90)
      	at io.undertow.server.protocol.http.HttpOpenListener.handleEvent(HttpOpenListener.java:49)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:291)
      	at org.xnio.ChannelListeners$10.handleEvent(ChannelListeners.java:286)
      	at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
      	at org.xnio.nio.NioTcpServerHandle.handleReady(NioTcpServerHandle.java:53)
      	at org.xnio.nio.WorkerThread.run(WorkerThread.java:539)
      Caused by: java.io.IOException: UT000111: Parser did not make progress
      	at io.undertow.protocols.http2.Http2PushBackParser.parse(Http2PushBackParser.java:61)
      	at io.undertow.protocols.http2.Http2Channel.<init>(Http2Channel.java:184)
      	... 26 more
      

            sdouglas1@redhat.com Stuart Douglas
            rhatlapa@redhat.com Radim Hatlapatka (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: