final class io.undertow.server.protocol.http.HttpReadListener implements org.xnio.ChannelListener<org.xnio.conduits.ConduitStreamSourceChannel>, java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.undertow.server.protocol.http.HttpReadListener
  super_class: java.lang.Object
{
  private static final io.undertow.util.HttpString PRI;
    descriptor: Lio/undertow/util/HttpString;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] PRI_EXPECTED;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String BAD_REQUEST;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "HTTP/1.1 400 Bad Request\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"

  private final io.undertow.server.protocol.http.HttpServerConnection connection;
    descriptor: Lio/undertow/server/protocol/http/HttpServerConnection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.undertow.server.protocol.http.ParseState state;
    descriptor: Lio/undertow/server/protocol/http/ParseState;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.undertow.server.protocol.http.HttpRequestParser parser;
    descriptor: Lio/undertow/server/protocol/http/HttpRequestParser;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.undertow.server.HttpServerExchange httpServerExchange;
    descriptor: Lio/undertow/server/HttpServerExchange;
    flags: (0x0002) ACC_PRIVATE

  private int read;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final int maxRequestSize;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long maxEntitySize;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean recordRequestStartTime;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean allowUnknownProtocols;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean requireHostHeader;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile int requestState;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.undertow.server.protocol.http.HttpReadListener> requestStateUpdater;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/undertow/server/protocol/http/HttpReadListener;>;

  private final io.undertow.server.ConnectorStatisticsImpl connectorStatistics;
    descriptor: Lio/undertow/server/ConnectorStatisticsImpl;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private io.undertow.server.protocol.ParseTimeoutUpdater parseTimeoutUpdater;
    descriptor: Lio/undertow/server/protocol/ParseTimeoutUpdater;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 64
            new io.undertow.util.HttpString
            dup
            ldc "PRI"
            invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
            putstatic io.undertow.server.protocol.http.HttpReadListener.PRI:Lio/undertow/util/HttpString;
         1: .line 65
            bipush 6
            newarray 8
            dup
            iconst_0
            bipush 83
            bastore
            dup
            iconst_1
            bipush 77
            bastore
            dup
            iconst_2
            bipush 13
            bastore
            dup
            iconst_3
            bipush 10
            bastore
            dup
            iconst_4
            bipush 13
            bastore
            dup
            iconst_5
            bipush 10
            bastore
            putstatic io.undertow.server.protocol.http.HttpReadListener.PRI_EXPECTED:[B
         2: .line 88
            ldc Lio/undertow/server/protocol/http/HttpReadListener;
            ldc "requestState"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            putstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(io.undertow.server.protocol.http.HttpServerConnection, io.undertow.server.protocol.http.HttpRequestParser, io.undertow.server.ConnectorStatisticsImpl);
    descriptor: (Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/server/protocol/http/HttpRequestParser;Lio/undertow/server/ConnectorStatisticsImpl;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=6, args_size=4
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // io.undertow.server.protocol.http.HttpServerConnection connection
        start local 2 // io.undertow.server.protocol.http.HttpRequestParser parser
        start local 3 // io.undertow.server.ConnectorStatisticsImpl connectorStatistics
         0: .line 94
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 76
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.http.HttpReadListener.read:I
         2: .line 95
            aload 0 /* this */
            aload 1 /* connection */
            putfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
         3: .line 96
            aload 0 /* this */
            aload 2 /* parser */
            putfield io.undertow.server.protocol.http.HttpReadListener.parser:Lio/undertow/server/protocol/http/HttpRequestParser;
         4: .line 97
            aload 0 /* this */
            aload 3 /* connectorStatistics */
            putfield io.undertow.server.protocol.http.HttpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
         5: .line 98
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.MAX_HEADER_SIZE:Lorg/xnio/Option;
            ldc 1048576
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            putfield io.undertow.server.protocol.http.HttpReadListener.maxRequestSize:I
         6: .line 99
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.MAX_ENTITY_SIZE:Lorg/xnio/Option;
            ldc -1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;J)J
            putfield io.undertow.server.protocol.http.HttpReadListener.maxEntitySize:J
         7: .line 100
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.RECORD_REQUEST_START_TIME:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            putfield io.undertow.server.protocol.http.HttpReadListener.recordRequestStartTime:Z
         8: .line 101
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.REQUIRE_HOST_HTTP11:Lorg/xnio/Option;
            iconst_1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            putfield io.undertow.server.protocol.http.HttpReadListener.requireHostHeader:Z
         9: .line 102
            aload 0 /* this */
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.ALLOW_UNKNOWN_PROTOCOLS:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            putfield io.undertow.server.protocol.http.HttpReadListener.allowUnknownProtocols:Z
        10: .line 103
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.REQUEST_PARSE_TIMEOUT:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            istore 4 /* requestParseTimeout */
        start local 4 // int requestParseTimeout
        11: .line 104
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.NO_REQUEST_TIMEOUT:Lorg/xnio/Option;
            iconst_m1
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            istore 5 /* requestIdleTimeout */
        start local 5 // int requestIdleTimeout
        12: .line 105
            iload 5 /* requestIdleTimeout */
            ifge 15
            iload 4 /* requestParseTimeout */
            ifge 15
        13: .line 106
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
        14: .line 107
            goto 17
        15: .line 108
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener io.undertow.server.protocol.http.HttpServerConnection io.undertow.server.protocol.http.HttpRequestParser io.undertow.server.ConnectorStatisticsImpl int int
      StackMap stack:
            aload 0 /* this */
            new io.undertow.server.protocol.ParseTimeoutUpdater
            dup
            aload 1 /* connection */
            iload 4 /* requestParseTimeout */
            i2l
            iload 5 /* requestIdleTimeout */
            i2l
            invokespecial io.undertow.server.protocol.ParseTimeoutUpdater.<init>:(Lorg/xnio/channels/ConnectedChannel;JJ)V
            putfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
        16: .line 109
            aload 1 /* connection */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.addCloseListener:(Lio/undertow/server/ServerConnection$CloseListener;)V
        17: .line 111
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new io.undertow.server.protocol.http.ParseState
            dup
            aload 1 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.HTTP_HEADERS_CACHE_SIZE:Lorg/xnio/Option;
            bipush 15
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;I)I
            invokespecial io.undertow.server.protocol.http.ParseState.<init>:(I)V
            putfield io.undertow.server.protocol.http.HttpReadListener.state:Lio/undertow/server/protocol/http/ParseState;
        18: .line 112
            return
        end local 5 // int requestIdleTimeout
        end local 4 // int requestParseTimeout
        end local 3 // io.undertow.server.ConnectorStatisticsImpl connectorStatistics
        end local 2 // io.undertow.server.protocol.http.HttpRequestParser parser
        end local 1 // io.undertow.server.protocol.http.HttpServerConnection connection
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   19     0                 this  Lio/undertow/server/protocol/http/HttpReadListener;
            0   19     1           connection  Lio/undertow/server/protocol/http/HttpServerConnection;
            0   19     2               parser  Lio/undertow/server/protocol/http/HttpRequestParser;
            0   19     3  connectorStatistics  Lio/undertow/server/ConnectorStatisticsImpl;
           11   19     4  requestParseTimeout  I
           12   19     5   requestIdleTimeout  I
    MethodParameters:
                     Name  Flags
      connection           final
      parser               final
      connectorStatistics  

  public void newRequest();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
         0: .line 115
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.state:Lio/undertow/server/protocol/http/ParseState;
            invokevirtual io.undertow.server.protocol.http.ParseState.reset:()V
         1: .line 116
            aload 0 /* this */
            iconst_0
            putfield io.undertow.server.protocol.http.HttpReadListener.read:I
         2: .line 117
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 4
         3: .line 118
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.connectionIdle:()V
         4: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aconst_null
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setCurrentExchange:(Lio/undertow/server/HttpServerExchange;)V
         5: .line 121
            return
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/undertow/server/protocol/http/HttpReadListener;

  public void handleEvent(org.xnio.conduits.ConduitStreamSourceChannel);
    descriptor: (Lorg/xnio/conduits/ConduitStreamSourceChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
         0: .line 124
            goto 9
         1: .line 127
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            iconst_2
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 9
         2: .line 129
            aload 1 /* channel */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
         3: .line 130
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 2
         5: .line 131
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
         6: .line 132
            aload 2
            athrow
         7: .line 131
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
         8: .line 133
            return
         9: .line 124
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
            ifne 1
        10: .line 136
            aload 0 /* this */
            aload 1 /* channel */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleEventWithNoRunningRequest:(Lorg/xnio/conduits/ConduitStreamSourceChannel;)V
        11: .line 137
            return
        end local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lio/undertow/server/protocol/http/HttpReadListener;
            0   12     1  channel  Lorg/xnio/conduits/ConduitStreamSourceChannel;
      Exception table:
        from    to  target  type
           2     4       4  any
    MethodParameters:
         Name  Flags
      channel  final

  public void handleEventWithNoRunningRequest(org.xnio.conduits.ConduitStreamSourceChannel);
    descriptor: (Lorg/xnio/conduits/ConduitStreamSourceChannel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
         0: .line 140
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
            astore 2 /* existing */
        start local 2 // io.undertow.connector.PooledByteBuffer existing
         1: .line 141
            aload 2 /* existing */
            ifnonnull 2
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getOriginalSourceConduit:()Lorg/xnio/conduits/StreamSourceConduit;
            invokeinterface org.xnio.conduits.StreamSourceConduit.isReadShutdown:()Z
            ifne 3
      StackMap locals: io.undertow.connector.PooledByteBuffer
      StackMap stack:
         2: aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getOriginalSinkConduit:()Lorg/xnio/conduits/StreamSinkConduit;
            invokeinterface org.xnio.conduits.StreamSinkConduit.isWriteShutdown:()Z
            ifeq 6
         3: .line 142
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         4: .line 143
            aload 1 /* channel */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
         5: .line 144
            return
         6: .line 147
      StackMap locals:
      StackMap stack:
            aload 2 /* existing */
            ifnonnull 7
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getByteBufferPool:()Lio/undertow/connector/ByteBufferPool;
            invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
            goto 8
      StackMap locals:
      StackMap stack:
         7: aload 2 /* existing */
      StackMap locals:
      StackMap stack: io.undertow.connector.PooledByteBuffer
         8: astore 3 /* pooled */
        start local 3 // io.undertow.connector.PooledByteBuffer pooled
         9: .line 148
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            astore 4 /* buffer */
        start local 4 // java.nio.ByteBuffer buffer
        10: .line 149
            iconst_1
            istore 5 /* free */
        start local 5 // boolean free
        11: .line 153
            iconst_0
            istore 7 /* bytesRead */
        start local 7 // boolean bytesRead
        12: .line 155
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int top int
      StackMap stack:
            aload 2 /* existing */
            ifnonnull 21
        13: .line 156
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
            pop
        14: .line 158
            aload 1 /* channel */
            aload 4 /* buffer */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 6 /* res */
        start local 6 // int res
        15: .line 159
            goto 22
        end local 6 // int res
      StackMap locals:
      StackMap stack: java.io.IOException
        16: astore 8 /* e */
        start local 8 // java.io.IOException e
        17: .line 160
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Error reading request"
            aload 8 /* e */
            invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
        18: .line 161
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        19: .line 260
            iload 5 /* free */
            ifeq 20
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        20: .line 162
      StackMap locals: java.io.IOException
      StackMap stack:
            return
        end local 8 // java.io.IOException e
        21: .line 165
      StackMap locals:
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 6 /* res */
        start local 6 // int res
        22: .line 168
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int int
      StackMap stack:
            iload 6 /* res */
            ifgt 28
        23: .line 169
            iload 7 /* bytesRead */
            ifeq 25
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 25
        24: .line 170
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.failedParse:()V
        25: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* channel */
            iload 6 /* res */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleFailedRead:(Lorg/xnio/conduits/ConduitStreamSourceChannel;I)V
        26: .line 260
            iload 5 /* free */
            ifeq 27
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        27: .line 173
      StackMap locals:
      StackMap stack:
            return
        28: .line 175
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 7 /* bytesRead */
        29: .line 177
            aload 2 /* existing */
            ifnull 33
        30: .line 178
            aconst_null
            astore 2 /* existing */
        31: .line 179
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aconst_null
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setExtraBytes:(Lio/undertow/connector/PooledByteBuffer;)V
        32: .line 180
            goto 34
        33: .line 181
      StackMap locals:
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
        34: .line 183
      StackMap locals:
      StackMap stack:
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            istore 8 /* begin */
        start local 8 // int begin
        35: .line 184
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
            ifnonnull 37
        36: .line 185
            aload 0 /* this */
            new io.undertow.server.HttpServerExchange
            dup
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.maxEntitySize:J
            invokespecial io.undertow.server.HttpServerExchange.<init>:(Lio/undertow/server/ServerConnection;J)V
            putfield io.undertow.server.protocol.http.HttpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
        37: .line 187
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parser:Lio/undertow/server/protocol/http/HttpRequestParser;
            aload 4 /* buffer */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.state:Lio/undertow/server/protocol/http/ParseState;
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
            invokevirtual io.undertow.server.protocol.http.HttpRequestParser.handle:(Ljava/nio/ByteBuffer;Lio/undertow/server/protocol/http/ParseState;Lio/undertow/server/HttpServerExchange;)V
        38: .line 188
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 41
        39: .line 189
            iconst_0
            istore 5 /* free */
        40: .line 190
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aload 3 /* pooled */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setExtraBytes:(Lio/undertow/connector/PooledByteBuffer;)V
        41: .line 192
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.read:I
            iload 8 /* begin */
            aload 4 /* buffer */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            isub
            iadd
            istore 9 /* total */
        start local 9 // int total
        42: .line 193
            aload 0 /* this */
            iload 9 /* total */
            putfield io.undertow.server.protocol.http.HttpReadListener.read:I
        43: .line 194
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.read:I
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.maxRequestSize:I
            if_icmple 48
        44: .line 195
            getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getPeerAddress:()Ljava/net/SocketAddress;
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.maxRequestSize:I
            invokeinterface io.undertow.UndertowLogger.requestHeaderWasTooLarge:(Ljava/net/SocketAddress;I)V
        45: .line 196
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            aconst_null
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        46: .line 260
            iload 5 /* free */
            ifeq 47
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        47: .line 197
      StackMap locals: int
      StackMap stack:
            return
        end local 9 // int total
        end local 8 // int begin
        48: .line 199
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.state:Lio/undertow/server/protocol/http/ParseState;
            invokevirtual io.undertow.server.protocol.http.ParseState.isComplete:()Z
            ifeq 12
        49: .line 200
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            ifnull 51
        50: .line 201
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
            invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.requestStarted:()V
        51: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
            astore 8 /* httpServerExchange */
        start local 8 // io.undertow.server.HttpServerExchange httpServerExchange
        52: .line 205
            aload 8 /* httpServerExchange */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getSslSession:()Ljavax/net/ssl/SSLSession;
            ifnull 53
            ldc "https"
            goto 54
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int int io.undertow.server.HttpServerExchange
      StackMap stack: io.undertow.server.HttpServerExchange
        53: ldc "http"
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int int io.undertow.server.HttpServerExchange
      StackMap stack: io.undertow.server.HttpServerExchange java.lang.String
        54: invokevirtual io.undertow.server.HttpServerExchange.setRequestScheme:(Ljava/lang/String;)Lio/undertow/server/HttpServerExchange;
            pop
        55: .line 206
            aload 0 /* this */
            aconst_null
            putfield io.undertow.server.protocol.http.HttpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
        56: .line 207
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        57: .line 209
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.recordRequestStartTime:Z
            ifeq 59
        58: .line 210
            aload 8 /* httpServerExchange */
            invokestatic io.undertow.server.Connectors.setRequestStartTime:(Lio/undertow/server/HttpServerExchange;)V
        59: .line 213
      StackMap locals:
      StackMap stack:
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getProtocol:()Lio/undertow/util/HttpString;
            getstatic io.undertow.util.Protocols.HTTP_2_0:Lio/undertow/util/HttpString;
            if_acmpne 63
        60: .line 214
            aload 0 /* this */
            aload 3 /* pooled */
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleHttp2PriorKnowledge:(Lio/undertow/connector/PooledByteBuffer;Lio/undertow/server/HttpServerExchange;)Z
            istore 5 /* free */
        61: .line 260
            iload 5 /* free */
            ifeq 62
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        62: .line 215
      StackMap locals:
      StackMap stack:
            return
        63: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.allowUnknownProtocols:Z
            ifne 70
        64: .line 219
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getProtocol:()Lio/undertow/util/HttpString;
            astore 9 /* protocol */
        start local 9 // io.undertow.util.HttpString protocol
        65: .line 220
            aload 9 /* protocol */
            getstatic io.undertow.util.Protocols.HTTP_1_1:Lio/undertow/util/HttpString;
            if_acmpeq 70
            aload 9 /* protocol */
            getstatic io.undertow.util.Protocols.HTTP_1_0:Lio/undertow/util/HttpString;
            if_acmpeq 70
            aload 9 /* protocol */
            getstatic io.undertow.util.Protocols.HTTP_0_9:Lio/undertow/util/HttpString;
            if_acmpeq 70
        66: .line 221
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            ldc "Closing connection from %s due to unknown protocol %s"
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getPeerAddress:()Ljava/net/SocketAddress;
            aload 9 /* protocol */
            invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        67: .line 222
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            new java.io.IOException
            dup
            invokespecial java.io.IOException.<init>:()V
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        68: .line 260
            iload 5 /* free */
            ifeq 69
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        69: .line 223
      StackMap locals: io.undertow.util.HttpString
      StackMap stack:
            return
        end local 9 // io.undertow.util.HttpString protocol
        70: .line 226
      StackMap locals:
      StackMap stack:
            aload 8 /* httpServerExchange */
            invokestatic io.undertow.server.protocol.http.HttpTransferEncoding.setupRequest:(Lio/undertow/server/HttpServerExchange;)V
        71: .line 227
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setCurrentExchange:(Lio/undertow/server/HttpServerExchange;)V
        72: .line 228
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
            ifnull 74
        73: .line 229
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.ConnectorStatisticsImpl.setup:(Lio/undertow/server/HttpServerExchange;)V
        74: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getSslSession:()Ljavax/net/ssl/SSLSession;
            ifnull 76
        75: .line 237
            aload 1 /* channel */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
        76: .line 240
      StackMap locals:
      StackMap stack:
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
            getstatic io.undertow.util.Headers.HOST:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HeaderMap.get:(Lio/undertow/util/HttpString;)Lio/undertow/util/HeaderValues;
            astore 9 /* host */
        start local 9 // io.undertow.util.HeaderValues host
        77: .line 241
            aload 9 /* host */
            ifnull 81
            aload 9 /* host */
            invokevirtual io.undertow.util.HeaderValues.size:()I
            iconst_1
            if_icmple 81
        78: .line 242
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.moreThanOneHostHeader:()Ljava/io/IOException;
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        79: .line 260
            iload 5 /* free */
            ifeq 80
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        80: .line 243
      StackMap locals: io.undertow.util.HeaderValues
      StackMap stack:
            return
        81: .line 245
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.requireHostHeader:Z
            ifeq 86
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getProtocol:()Lio/undertow/util/HttpString;
            getstatic io.undertow.util.Protocols.HTTP_1_1:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
            ifeq 86
        82: .line 246
            aload 9 /* host */
            ifnull 83
            aload 9 /* host */
            invokevirtual io.undertow.util.HeaderValues.size:()I
            ifeq 83
            aload 9 /* host */
            invokevirtual io.undertow.util.HeaderValues.getFirst:()Ljava/lang/String;
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 86
        83: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.noHostInHttp11Request:()Ljava/io/IOException;
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        84: .line 260
            iload 5 /* free */
            ifeq 85
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        85: .line 248
      StackMap locals:
      StackMap stack:
            return
        86: .line 251
      StackMap locals:
      StackMap stack:
            aload 8 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
            invokestatic io.undertow.server.Connectors.areRequestHeadersValid:(Lio/undertow/util/HeaderMap;)Z
            ifne 90
        87: .line 252
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.invalidHeaders:()Ljava/lang/IllegalArgumentException;
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        88: .line 260
            iload 5 /* free */
            ifeq 89
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        89: .line 253
      StackMap locals:
      StackMap stack:
            return
        90: .line 255
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getRootHandler:()Lio/undertow/server/HttpHandler;
            aload 8 /* httpServerExchange */
            invokestatic io.undertow.server.Connectors.executeRootHandler:(Lio/undertow/server/HttpHandler;Lio/undertow/server/HttpServerExchange;)V
        end local 9 // io.undertow.util.HeaderValues host
        end local 8 // io.undertow.server.HttpServerExchange httpServerExchange
        end local 7 // boolean bytesRead
        end local 6 // int res
        91: .line 256
            goto 99
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int
      StackMap stack: java.lang.Throwable
        92: astore 6 /* t */
        start local 6 // java.lang.Throwable t
        93: .line 257
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            aload 6 /* t */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
        94: .line 260
            iload 5 /* free */
            ifeq 95
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        95: .line 258
      StackMap locals: java.lang.Throwable
      StackMap stack:
            return
        end local 6 // java.lang.Throwable t
        96: .line 259
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int
      StackMap stack: java.lang.Throwable
            astore 10
        97: .line 260
            iload 5 /* free */
            ifeq 98
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        98: .line 261
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int top top top top java.lang.Throwable
      StackMap stack:
            aload 10
            athrow
        99: .line 260
      StackMap locals: io.undertow.server.protocol.http.HttpReadListener org.xnio.conduits.ConduitStreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int
      StackMap stack:
            iload 5 /* free */
            ifeq 100
            aload 3 /* pooled */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
       100: .line 262
      StackMap locals:
      StackMap stack:
            return
        end local 5 // boolean free
        end local 4 // java.nio.ByteBuffer buffer
        end local 3 // io.undertow.connector.PooledByteBuffer pooled
        end local 2 // io.undertow.connector.PooledByteBuffer existing
        end local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0  101     0                this  Lio/undertow/server/protocol/http/HttpReadListener;
            0  101     1             channel  Lorg/xnio/conduits/ConduitStreamSourceChannel;
            1  101     2            existing  Lio/undertow/connector/PooledByteBuffer;
            9  101     3              pooled  Lio/undertow/connector/PooledByteBuffer;
           10  101     4              buffer  Ljava/nio/ByteBuffer;
           11  101     5                free  Z
           15   16     6                 res  I
           22   91     6                 res  I
           12   91     7           bytesRead  Z
           17   21     8                   e  Ljava/io/IOException;
           35   48     8               begin  I
           42   48     9               total  I
           52   91     8  httpServerExchange  Lio/undertow/server/HttpServerExchange;
           65   70     9            protocol  Lio/undertow/util/HttpString;
           77   91     9                host  Lio/undertow/util/HeaderValues;
           93   96     6                   t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          14    15      16  Class java.io.IOException
          11    19      92  Class java.lang.Throwable
          21    26      92  Class java.lang.Throwable
          28    46      92  Class java.lang.Throwable
          48    61      92  Class java.lang.Throwable
          63    68      92  Class java.lang.Throwable
          70    79      92  Class java.lang.Throwable
          81    84      92  Class java.lang.Throwable
          86    88      92  Class java.lang.Throwable
          90    91      92  Class java.lang.Throwable
          11    19      96  any
          21    26      96  any
          28    46      96  any
          48    61      96  any
          63    68      96  any
          70    79      96  any
          81    84      96  any
          86    88      96  any
          90    94      96  any
    MethodParameters:
         Name  Flags
      channel  final

  private boolean handleHttp2PriorKnowledge(io.undertow.connector.PooledByteBuffer, io.undertow.server.HttpServerExchange);
    descriptor: (Lio/undertow/connector/PooledByteBuffer;Lio/undertow/server/HttpServerExchange;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // io.undertow.connector.PooledByteBuffer pooled
        start local 2 // io.undertow.server.HttpServerExchange httpServerExchange
         0: .line 265
            aload 2 /* httpServerExchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestMethod:()Lio/undertow/util/HttpString;
            getstatic io.undertow.server.protocol.http.HttpReadListener.PRI:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
            ifeq 3
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            getstatic io.undertow.UndertowOptions.ENABLE_HTTP2:Lorg/xnio/Option;
            iconst_0
            invokevirtual org.xnio.OptionMap.get:(Lorg/xnio/Option;Z)Z
            ifeq 3
         1: .line 266
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aload 1 /* pooled */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleHttp2PriorKnowledge:(Lorg/xnio/StreamConnection;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/connector/PooledByteBuffer;)V
         2: .line 267
            iconst_0
            ireturn
         3: .line 269
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            new java.io.IOException
            dup
            invokespecial java.io.IOException.<init>:()V
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.sendBadRequestAndClose:(Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
         4: .line 270
            iconst_1
            ireturn
        end local 2 // io.undertow.server.HttpServerExchange httpServerExchange
        end local 1 // io.undertow.connector.PooledByteBuffer pooled
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lio/undertow/server/protocol/http/HttpReadListener;
            0    5     1              pooled  Lio/undertow/connector/PooledByteBuffer;
            0    5     2  httpServerExchange  Lio/undertow/server/HttpServerExchange;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                    Name  Flags
      pooled              
      httpServerExchange  

  private void handleFailedRead(org.xnio.conduits.ConduitStreamSourceChannel, int);
    descriptor: (Lorg/xnio/conduits/ConduitStreamSourceChannel;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
        start local 2 // int res
         0: .line 275
            iload 2 /* res */
            ifne 4
         1: .line 276
            aload 1 /* channel */
            aload 0 /* this */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setReadListener:(Lorg/xnio/ChannelListener;)V
         2: .line 277
            aload 1 /* channel */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.resumeReads:()V
         3: .line 278
            goto 6
      StackMap locals:
      StackMap stack:
         4: iload 2 /* res */
            iconst_m1
            if_icmpne 6
         5: .line 279
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
         6: .line 281
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int res
        end local 1 // org.xnio.conduits.ConduitStreamSourceChannel channel
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lio/undertow/server/protocol/http/HttpReadListener;
            0    7     1  channel  Lorg/xnio/conduits/ConduitStreamSourceChannel;
            0    7     2      res  I
    MethodParameters:
         Name  Flags
      channel  
      res      

  private void sendBadRequestAndClose(org.xnio.StreamConnection, java.lang.Throwable);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.StreamConnection connection
        start local 2 // java.lang.Throwable exception
         0: .line 284
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 2 /* exception */
            invokeinterface io.undertow.UndertowLogger.failedToParseRequest:(Ljava/lang/Throwable;)V
         1: .line 285
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
         2: .line 286
            new io.undertow.server.protocol.http.HttpReadListener$1
            dup
            aload 0 /* this */
            ldc "HTTP/1.1 400 Bad Request\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
            aload 1 /* connection */
            invokespecial io.undertow.server.protocol.http.HttpReadListener$1.<init>:(Lio/undertow/server/protocol/http/HttpReadListener;Ljava/lang/String;Lorg/xnio/StreamConnection;)V
         3: .line 298
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual io.undertow.server.protocol.http.HttpReadListener$1.setup:(Lorg/xnio/channels/StreamSinkChannel;)V
         4: .line 299
            return
        end local 2 // java.lang.Throwable exception
        end local 1 // org.xnio.StreamConnection connection
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lio/undertow/server/protocol/http/HttpReadListener;
            0    5     1  connection  Lorg/xnio/StreamConnection;
            0    5     2   exception  Ljava/lang/Throwable;
    MethodParameters:
            Name  Flags
      connection  final
      exception   final

  public void exchangeComplete(io.undertow.server.HttpServerExchange);
    descriptor: (Lio/undertow/server/HttpServerExchange;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // io.undertow.server.HttpServerExchange exchange
         0: .line 302
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.clearChannel:()V
         1: .line 303
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            aconst_null
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setCurrentExchange:(Lio/undertow/server/HttpServerExchange;)V
         2: .line 304
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            astore 2 /* connection */
        start local 2 // io.undertow.server.protocol.http.HttpServerConnection connection
         3: .line 305
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isPersistent:()Z
            ifeq 50
            aload 0 /* this */
            aload 1 /* exchange */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.isUpgradeOrConnect:(Lio/undertow/server/HttpServerExchange;)Z
            ifne 50
         4: .line 306
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            astore 3 /* channel */
        start local 3 // org.xnio.StreamConnection channel
         5: .line 307
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
            ifnonnull 27
         6: .line 310
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isInIoThread:()Z
            ifeq 12
         7: .line 312
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.newRequest:()V
         8: .line 313
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            aload 0 /* this */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setReadListener:(Lorg/xnio/ChannelListener;)V
         9: .line 314
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.resumeReads:()V
        10: .line 315
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        11: .line 316
            goto 73
        12: .line 318
      StackMap locals: io.undertow.server.protocol.http.HttpServerConnection org.xnio.StreamConnection
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getOriginalSourceConduit:()Lorg/xnio/conduits/StreamSourceConduit;
            invokeinterface org.xnio.conduits.StreamSourceConduit.isReadShutdown:()Z
            ifne 13
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getOriginalSinkConduit:()Lorg/xnio/conduits/StreamSinkConduit;
            invokeinterface org.xnio.conduits.StreamSinkConduit.isWriteShutdown:()Z
            ifeq 17
        13: .line 319
      StackMap locals:
      StackMap stack:
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
        14: .line 320
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.suspendWrites:()V
        15: .line 321
            aload 2 /* connection */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        16: .line 322
            return
        17: .line 324
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            iconst_2
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 12
        18: .line 326
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.newRequest:()V
        19: .line 327
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            aload 0 /* this */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setReadListener:(Lorg/xnio/ChannelListener;)V
        20: .line 328
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.resumeReads:()V
        21: .line 329
            goto 25
      StackMap locals:
      StackMap stack: java.lang.Throwable
        22: astore 4
        23: .line 330
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        24: .line 331
            aload 4
            athrow
        25: .line 330
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        26: .line 337
            goto 73
        27: .line 338
      StackMap locals:
      StackMap stack:
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isInIoThread:()Z
            ifeq 32
        28: .line 339
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        29: .line 340
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.newRequest:()V
        30: .line 342
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getIoThread:()Lorg/xnio/XnioIoThread;
            aload 0 /* this */
            invokevirtual org.xnio.XnioIoThread.execute:(Ljava/lang/Runnable;)V
        31: .line 343
            goto 73
        32: .line 345
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getOriginalSinkConduit:()Lorg/xnio/conduits/StreamSinkConduit;
            invokeinterface org.xnio.conduits.StreamSinkConduit.isWriteShutdown:()Z
            ifeq 37
        33: .line 346
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
        34: .line 347
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.suspendWrites:()V
        35: .line 348
            aload 2 /* connection */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        36: .line 349
            return
        37: .line 350
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_1
            iconst_2
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ifeq 32
        38: .line 352
            aload 0 /* this */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.newRequest:()V
        39: .line 353
            aload 3 /* channel */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
        40: .line 354
            goto 44
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: astore 4
        42: .line 355
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        43: .line 356
            aload 4
            athrow
        44: .line 355
      StackMap locals:
      StackMap stack:
            getstatic io.undertow.server.protocol.http.HttpReadListener.requestStateUpdater:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iconst_0
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.set:(Ljava/lang/Object;I)V
        45: .line 360
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getDispatchExecutor:()Ljava/util/concurrent/Executor;
            astore 4 /* executor */
        start local 4 // java.util.concurrent.Executor executor
        46: .line 361
            aload 4 /* executor */
            ifnonnull 48
        47: .line 362
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
            invokevirtual io.undertow.server.ServerConnection.getWorker:()Lorg/xnio/XnioWorker;
            astore 4 /* executor */
        48: .line 364
      StackMap locals: java.util.concurrent.Executor
      StackMap stack:
            aload 4 /* executor */
            aload 0 /* this */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        end local 4 // java.util.concurrent.Executor executor
        end local 3 // org.xnio.StreamConnection channel
        49: .line 367
            goto 73
      StackMap locals:
      StackMap stack:
        50: aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isPersistent:()Z
            ifne 56
        51: .line 368
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 54
        52: .line 369
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        53: .line 370
            aload 2 /* connection */
            aconst_null
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.setExtraBytes:(Lio/undertow/connector/PooledByteBuffer;)V
        54: .line 372
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            iconst_1
            anewarray java.io.Closeable
            dup
            iconst_0
            aload 2 /* connection */
            aastore
            invokestatic io.undertow.util.ConnectionUtils.cleanClose:(Lorg/xnio/StreamConnection;[Ljava/io/Closeable;)V
        55: .line 373
            goto 73
        56: .line 375
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
            ifnull 58
        57: .line 376
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            new io.undertow.conduits.ReadDataStreamSourceConduit
            dup
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.getConduit:()Lorg/xnio/conduits/StreamSourceConduit;
            aload 2 /* connection */
            invokespecial io.undertow.conduits.ReadDataStreamSourceConduit.<init>:(Lorg/xnio/conduits/StreamSourceConduit;Lio/undertow/server/AbstractServerConnection;)V
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setConduit:(Lorg/xnio/conduits/StreamSourceConduit;)V
        58: .line 379
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.flush:()Z
            ifne 64
        59: .line 380
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            new io.undertow.server.protocol.http.HttpReadListener$2
            dup
            aload 0 /* this */
            aload 2 /* connection */
            aload 1 /* exchange */
            invokespecial io.undertow.server.protocol.http.HttpReadListener$2.<init>:(Lio/undertow/server/protocol/http/HttpReadListener;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/server/HttpServerExchange;)V
        60: .line 385
            new io.undertow.util.ClosingChannelExceptionHandler
            dup
            iconst_1
            anewarray java.io.Closeable
            dup
            iconst_0
            aload 2 /* connection */
            aastore
            invokespecial io.undertow.util.ClosingChannelExceptionHandler.<init>:([Ljava/io/Closeable;)V
        61: .line 380
            invokestatic org.xnio.ChannelListeners.flushingChannelListener:(Lorg/xnio/ChannelListener;Lorg/xnio/ChannelExceptionHandler;)Lorg/xnio/ChannelListener;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.setWriteListener:(Lorg/xnio/ChannelListener;)V
        62: .line 386
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
            invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.resumeWrites:()V
        63: .line 387
            return
        64: .line 389
      StackMap locals:
      StackMap stack:
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUpgradeListener:()Lio/undertow/server/HttpUpgradeListener;
            aload 2 /* connection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            aload 1 /* exchange */
            invokeinterface io.undertow.server.HttpUpgradeListener.handleUpgrade:(Lorg/xnio/StreamConnection;Lio/undertow/server/HttpServerExchange;)V
        65: .line 390
            goto 73
      StackMap locals:
      StackMap stack: java.io.IOException
        66: astore 3 /* e */
        start local 3 // java.io.IOException e
        67: .line 391
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 3 /* e */
            invokeinterface io.undertow.UndertowLogger.ioException:(Ljava/io/IOException;)V
        68: .line 392
            aload 2 /* connection */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        end local 3 // java.io.IOException e
        69: goto 73
        70: .line 393
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3 /* t */
        start local 3 // java.lang.Throwable t
        71: .line 394
            getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
            aload 3 /* t */
            invokeinterface io.undertow.UndertowLogger.handleUnexpectedFailure:(Ljava/lang/Throwable;)V
        72: .line 395
            aload 2 /* connection */
            invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
        end local 3 // java.lang.Throwable t
        73: .line 398
      StackMap locals:
      StackMap stack:
            return
        end local 2 // io.undertow.server.protocol.http.HttpServerConnection connection
        end local 1 // io.undertow.server.HttpServerExchange exchange
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   74     0        this  Lio/undertow/server/protocol/http/HttpReadListener;
            0   74     1    exchange  Lio/undertow/server/HttpServerExchange;
            3   74     2  connection  Lio/undertow/server/protocol/http/HttpServerConnection;
            5   49     3     channel  Lorg/xnio/StreamConnection;
           46   49     4    executor  Ljava/util/concurrent/Executor;
           67   69     3           e  Ljava/io/IOException;
           71   73     3           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
          18    22      22  any
          38    41      41  any
          58    63      66  Class java.io.IOException
          64    65      66  Class java.io.IOException
          58    63      70  Class java.lang.Throwable
          64    65      70  Class java.lang.Throwable
    MethodParameters:
          Name  Flags
      exchange  final

  private boolean isUpgradeOrConnect(io.undertow.server.HttpServerExchange);
    descriptor: (Lio/undertow/server/HttpServerExchange;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // io.undertow.server.HttpServerExchange exchange
         0: .line 401
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.isUpgrade:()Z
            ifne 2
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getRequestMethod:()Lio/undertow/util/HttpString;
            getstatic io.undertow.util.Methods.CONNECT:Lio/undertow/util/HttpString;
            invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
            ifeq 1
            aload 1 /* exchange */
            invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
            checkcast io.undertow.server.protocol.http.HttpServerConnection
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.isConnectHandled:()Z
            ifne 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_1
            ireturn
        end local 1 // io.undertow.server.HttpServerExchange exchange
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lio/undertow/server/protocol/http/HttpReadListener;
            0    3     1  exchange  Lio/undertow/server/HttpServerExchange;
    MethodParameters:
          Name  Flags
      exchange  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
         0: .line 406
            aload 0 /* this */
            aload 0 /* this */
            getfield io.undertow.server.protocol.http.HttpReadListener.connection:Lio/undertow/server/protocol/http/HttpServerConnection;
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleEvent:(Lorg/xnio/conduits/ConduitStreamSourceChannel;)V
         1: .line 407
            return
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/undertow/server/protocol/http/HttpReadListener;

  private void handleHttp2PriorKnowledge(org.xnio.StreamConnection, io.undertow.server.protocol.http.HttpServerConnection, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lorg/xnio/StreamConnection;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/connector/PooledByteBuffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=8, args_size=4
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.StreamConnection connection
        start local 2 // io.undertow.server.protocol.http.HttpServerConnection serverConnection
        start local 3 // io.undertow.connector.PooledByteBuffer readData
         0: .line 412
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            astore 4 /* request */
        start local 4 // org.xnio.conduits.ConduitStreamSourceChannel request
         1: .line 414
            getstatic io.undertow.server.protocol.http.HttpReadListener.PRI_EXPECTED:[B
            arraylength
            newarray 8
            astore 5 /* data */
        start local 5 // byte[] data
         2: .line 415
            aload 5 /* data */
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            astore 6 /* buffer */
        start local 6 // java.nio.ByteBuffer buffer
         3: .line 416
            aload 3 /* readData */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 7
         4: .line 417
            goto 6
         5: .line 418
      StackMap locals: org.xnio.conduits.ConduitStreamSourceChannel byte[] java.nio.ByteBuffer
      StackMap stack:
            aload 6 /* buffer */
            aload 3 /* readData */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.get:()B
            invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
            pop
         6: .line 417
      StackMap locals:
      StackMap stack:
            aload 3 /* readData */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 7
            aload 6 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifne 5
         7: .line 422
      StackMap locals:
      StackMap stack:
            aload 3 /* readData */
            invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 10
         8: .line 423
            aload 3 /* readData */
            astore 7 /* extraData */
        start local 7 // io.undertow.connector.PooledByteBuffer extraData
         9: .line 424
            goto 12
        end local 7 // io.undertow.connector.PooledByteBuffer extraData
        10: .line 425
      StackMap locals:
      StackMap stack:
            aload 3 /* readData */
            invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
        11: .line 426
            aconst_null
            astore 7 /* extraData */
        start local 7 // io.undertow.connector.PooledByteBuffer extraData
        12: .line 428
      StackMap locals: io.undertow.connector.PooledByteBuffer
      StackMap stack:
            aload 0 /* this */
            aload 1 /* connection */
            aload 6 /* buffer */
            aload 2 /* serverConnection */
            aload 7 /* extraData */
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.doHttp2PriRead:(Lorg/xnio/StreamConnection;Ljava/nio/ByteBuffer;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/connector/PooledByteBuffer;)Z
            ifne 15
        13: .line 429
            aload 4 /* request */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
            new io.undertow.server.protocol.http.HttpReadListener$3
            dup
            aload 0 /* this */
            aload 1 /* connection */
            aload 6 /* buffer */
            aload 2 /* serverConnection */
            aload 7 /* extraData */
            invokespecial io.undertow.server.protocol.http.HttpReadListener$3.<init>:(Lio/undertow/server/protocol/http/HttpReadListener;Lorg/xnio/StreamConnection;Ljava/nio/ByteBuffer;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/connector/PooledByteBuffer;)V
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
        14: .line 443
            aload 4 /* request */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.resumeReads:()V
        15: .line 445
      StackMap locals:
      StackMap stack:
            return
        end local 7 // io.undertow.connector.PooledByteBuffer extraData
        end local 6 // java.nio.ByteBuffer buffer
        end local 5 // byte[] data
        end local 4 // org.xnio.conduits.ConduitStreamSourceChannel request
        end local 3 // io.undertow.connector.PooledByteBuffer readData
        end local 2 // io.undertow.server.protocol.http.HttpServerConnection serverConnection
        end local 1 // org.xnio.StreamConnection connection
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   16     0              this  Lio/undertow/server/protocol/http/HttpReadListener;
            0   16     1        connection  Lorg/xnio/StreamConnection;
            0   16     2  serverConnection  Lio/undertow/server/protocol/http/HttpServerConnection;
            0   16     3          readData  Lio/undertow/connector/PooledByteBuffer;
            1   16     4           request  Lorg/xnio/conduits/ConduitStreamSourceChannel;
            2   16     5              data  [B
            3   16     6            buffer  Ljava/nio/ByteBuffer;
            9   10     7         extraData  Lio/undertow/connector/PooledByteBuffer;
           12   16     7         extraData  Lio/undertow/connector/PooledByteBuffer;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      connection        final
      serverConnection  final
      readData          

  private boolean doHttp2PriRead(org.xnio.StreamConnection, java.nio.ByteBuffer, io.undertow.server.protocol.http.HttpServerConnection, io.undertow.connector.PooledByteBuffer);
    descriptor: (Lorg/xnio/StreamConnection;Ljava/nio/ByteBuffer;Lio/undertow/server/protocol/http/HttpServerConnection;Lio/undertow/connector/PooledByteBuffer;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=7, args_size=5
        start local 0 // io.undertow.server.protocol.http.HttpReadListener this
        start local 1 // org.xnio.StreamConnection connection
        start local 2 // java.nio.ByteBuffer buffer
        start local 3 // io.undertow.server.protocol.http.HttpServerConnection serverConnection
        start local 4 // io.undertow.connector.PooledByteBuffer extraData
         0: .line 448
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 6
         1: .line 449
            aload 1 /* connection */
            invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
            aload 2 /* buffer */
            invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 5 /* res */
        start local 5 // int res
         2: .line 450
            iload 5 /* res */
            iconst_m1
            if_icmpne 4
         3: .line 451
            iconst_1
            ireturn
         4: .line 453
      StackMap locals: int
      StackMap stack:
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
            ifeq 6
         5: .line 454
            iconst_0
            ireturn
        end local 5 // int res
         6: .line 457
      StackMap locals:
      StackMap stack:
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
            pop
         7: .line 458
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         8: goto 12
         9: .line 459
      StackMap locals: int
      StackMap stack:
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.get:()B
            getstatic io.undertow.server.protocol.http.HttpReadListener.PRI_EXPECTED:[B
            iload 5 /* i */
            baload
            if_icmpeq 11
        10: .line 460
            getstatic io.undertow.UndertowMessages.MESSAGES:Lio/undertow/UndertowMessages;
            invokeinterface io.undertow.UndertowMessages.http2PriRequestFailed:()Ljava/io/IOException;
            athrow
        11: .line 458
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 5 /* i */
            getstatic io.undertow.server.protocol.http.HttpReadListener.PRI_EXPECTED:[B
            arraylength
            if_icmplt 9
        end local 5 // int i
        13: .line 464
            new io.undertow.protocols.http2.Http2Channel
            dup
            aload 1 /* connection */
            aconst_null
            aload 3 /* serverConnection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getByteBufferPool:()Lio/undertow/connector/ByteBufferPool;
            aload 4 /* extraData */
            iconst_0
            iconst_0
            iconst_0
            aload 3 /* serverConnection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            invokespecial io.undertow.protocols.http2.Http2Channel.<init>:(Lorg/xnio/StreamConnection;Ljava/lang/String;Lio/undertow/connector/ByteBufferPool;Lio/undertow/connector/PooledByteBuffer;ZZZLorg/xnio/OptionMap;)V
            astore 5 /* channel */
        start local 5 // io.undertow.protocols.http2.Http2Channel channel
        14: .line 465
            new io.undertow.server.protocol.http2.Http2ReceiveListener
            dup
            aload 3 /* serverConnection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getRootHandler:()Lio/undertow/server/HttpHandler;
            aload 3 /* serverConnection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getUndertowOptions:()Lorg/xnio/OptionMap;
            aload 3 /* serverConnection */
            invokevirtual io.undertow.server.protocol.http.HttpServerConnection.getBufferSize:()I
            aconst_null
            invokespecial io.undertow.server.protocol.http2.Http2ReceiveListener.<init>:(Lio/undertow/server/HttpHandler;Lorg/xnio/OptionMap;ILio/undertow/server/ConnectorStatisticsImpl;)V
            astore 6 /* receiveListener */
        start local 6 // io.undertow.server.protocol.http2.Http2ReceiveListener receiveListener
        15: .line 466
            aload 5 /* channel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.getReceiveSetter:()Lorg/xnio/ChannelListener$Setter;
            aload 6 /* receiveListener */
            invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
        16: .line 467
            aload 5 /* channel */
            invokevirtual io.undertow.protocols.http2.Http2Channel.resumeReceives:()V
        17: .line 468
            iconst_1
            ireturn
        end local 6 // io.undertow.server.protocol.http2.Http2ReceiveListener receiveListener
        end local 5 // io.undertow.protocols.http2.Http2Channel channel
        end local 4 // io.undertow.connector.PooledByteBuffer extraData
        end local 3 // io.undertow.server.protocol.http.HttpServerConnection serverConnection
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // org.xnio.StreamConnection connection
        end local 0 // io.undertow.server.protocol.http.HttpReadListener this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0              this  Lio/undertow/server/protocol/http/HttpReadListener;
            0   18     1        connection  Lorg/xnio/StreamConnection;
            0   18     2            buffer  Ljava/nio/ByteBuffer;
            0   18     3  serverConnection  Lio/undertow/server/protocol/http/HttpServerConnection;
            0   18     4         extraData  Lio/undertow/connector/PooledByteBuffer;
            2    6     5               res  I
            8   13     5                 i  I
           14   18     5           channel  Lio/undertow/protocols/http2/Http2Channel;
           15   18     6   receiveListener  Lio/undertow/server/protocol/http2/Http2ReceiveListener;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      connection        
      buffer            
      serverConnection  
      extraData         

  public void handleEvent(java.nio.channels.Channel);
    descriptor: (Ljava/nio/channels/Channel;)V
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast org.xnio.conduits.ConduitStreamSourceChannel
            invokevirtual io.undertow.server.protocol.http.HttpReadListener.handleEvent:(Lorg/xnio/conduits/ConduitStreamSourceChannel;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Lorg/xnio/ChannelListener<Lorg/xnio/conduits/ConduitStreamSourceChannel;>;Ljava/lang/Runnable;
SourceFile: "HttpReadListener.java"
NestMembers:
  io.undertow.server.protocol.http.HttpReadListener$1  io.undertow.server.protocol.http.HttpReadListener$2  io.undertow.server.protocol.http.HttpReadListener$3
InnerClasses:
  public abstract CloseListener = io.undertow.server.ServerConnection$CloseListener of io.undertow.server.ServerConnection
  io.undertow.server.protocol.http.HttpReadListener$1
  io.undertow.server.protocol.http.HttpReadListener$2
  io.undertow.server.protocol.http.HttpReadListener$3
  public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener