final class io.undertow.server.protocol.ajp.AjpReadListener implements org.xnio.ChannelListener<org.xnio.channels.StreamSourceChannel>
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: io.undertow.server.protocol.ajp.AjpReadListener
super_class: java.lang.Object
{
private static final byte[] CPONG;
descriptor: [B
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final io.undertow.server.protocol.ajp.AjpServerConnection connection;
descriptor: Lio/undertow/server/protocol/ajp/AjpServerConnection;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.lang.String scheme;
descriptor: Ljava/lang/String;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final boolean recordRequestStartTime;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private io.undertow.server.protocol.ajp.AjpRequestParseState state;
descriptor: Lio/undertow/server/protocol/ajp/AjpRequestParseState;
flags: (0x0002) ACC_PRIVATE
private io.undertow.server.HttpServerExchange httpServerExchange;
descriptor: Lio/undertow/server/HttpServerExchange;
flags: (0x0002) ACC_PRIVATE
private volatile int read;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
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 io.undertow.server.protocol.ajp.AjpRequestParser parser;
descriptor: Lio/undertow/server/protocol/ajp/AjpRequestParser;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final io.undertow.server.ConnectorStatisticsImpl connectorStatistics;
descriptor: Lio/undertow/server/ConnectorStatisticsImpl;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler<org.xnio.conduits.ConduitStreamSinkChannel> writeReadyHandler;
descriptor: Lorg/xnio/conduits/WriteReadyHandler$ChannelListenerHandler;
flags: (0x0002) ACC_PRIVATE
Signature: Lorg/xnio/conduits/WriteReadyHandler$ChannelListenerHandler<Lorg/xnio/conduits/ConduitStreamSinkChannel;>;
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: iconst_5
newarray 8
dup
iconst_0
bipush 65
bastore
dup
iconst_1
bipush 66
bastore
dup
iconst_3
iconst_1
bastore
dup
iconst_4
bipush 9
bastore
putstatic io.undertow.server.protocol.ajp.AjpReadListener.CPONG:[B
return
LocalVariableTable:
Start End Slot Name Signature
void <init>(io.undertow.server.protocol.ajp.AjpServerConnection, java.lang.String, io.undertow.server.protocol.ajp.AjpRequestParser, io.undertow.server.ConnectorStatisticsImpl);
descriptor: (Lio/undertow/server/protocol/ajp/AjpServerConnection;Ljava/lang/String;Lio/undertow/server/protocol/ajp/AjpRequestParser;Lio/undertow/server/ConnectorStatisticsImpl;)V
flags: (0x0000)
Code:
stack=8, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new io.undertow.server.protocol.ajp.AjpRequestParseState
dup
invokespecial io.undertow.server.protocol.ajp.AjpRequestParseState.<init>:()V
putfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
2: aload 0
iconst_0
putfield io.undertow.server.protocol.ajp.AjpReadListener.read:I
3: aload 0
aload 1
putfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
4: aload 0
aload 2
putfield io.undertow.server.protocol.ajp.AjpReadListener.scheme:Ljava/lang/String;
5: aload 0
aload 3
putfield io.undertow.server.protocol.ajp.AjpReadListener.parser:Lio/undertow/server/protocol/ajp/AjpRequestParser;
6: aload 0
aload 4
putfield io.undertow.server.protocol.ajp.AjpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
7: aload 0
aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.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.ajp.AjpReadListener.maxRequestSize:I
8: aload 0
aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.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.ajp.AjpReadListener.maxEntitySize:J
9: aload 0
new org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler
dup
aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
invokespecial org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler.<init>:(Lorg/xnio/channels/SuspendableWriteChannel;)V
putfield io.undertow.server.protocol.ajp.AjpReadListener.writeReadyHandler:Lorg/xnio/conduits/WriteReadyHandler$ChannelListenerHandler;
10: aload 0
aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.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.ajp.AjpReadListener.recordRequestStartTime:Z
11: aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.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 5
start local 5 12: aload 1
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.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 6
start local 6 13: iload 6
ifge 16
iload 5
ifge 16
14: aload 0
aconst_null
putfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
15: goto 18
16: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener io.undertow.server.protocol.ajp.AjpServerConnection java.lang.String io.undertow.server.protocol.ajp.AjpRequestParser io.undertow.server.ConnectorStatisticsImpl int int
StackMap stack:
aload 0
new io.undertow.server.protocol.ParseTimeoutUpdater
dup
aload 1
iload 5
i2l
iload 6
i2l
invokespecial io.undertow.server.protocol.ParseTimeoutUpdater.<init>:(Lorg/xnio/channels/ConnectedChannel;JJ)V
putfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
17: aload 1
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.addCloseListener:(Lio/undertow/server/ServerConnection$CloseListener;)V
18: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
0 19 1 connection Lio/undertow/server/protocol/ajp/AjpServerConnection;
0 19 2 scheme Ljava/lang/String;
0 19 3 parser Lio/undertow/server/protocol/ajp/AjpRequestParser;
0 19 4 connectorStatistics Lio/undertow/server/ConnectorStatisticsImpl;
12 19 5 requestParseTimeout I
13 19 6 requestIdleTimeout I
MethodParameters:
Name Flags
connection final
scheme final
parser
connectorStatistics
public void startRequest();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.resetChannel:()Lio/undertow/server/AbstractServerConnection$ConduitState;
pop
1: aload 0
new io.undertow.server.protocol.ajp.AjpRequestParseState
dup
invokespecial io.undertow.server.protocol.ajp.AjpRequestParseState.<init>:()V
putfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
2: aload 0
iconst_0
putfield io.undertow.server.protocol.ajp.AjpReadListener.read:I
3: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
ifnull 5
4: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.connectionIdle:()V
5: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aconst_null
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.setCurrentExchange:(Lio/undertow/server/HttpServerExchange;)V
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
public void handleEvent(org.xnio.channels.StreamSourceChannel);
descriptor: (Lorg/xnio/channels/StreamSourceChannel;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=12, args_size=2
start local 0 start local 1 0: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getOriginalSinkConduit:()Lorg/xnio/conduits/StreamSinkConduit;
invokeinterface org.xnio.conduits.StreamSinkConduit.isWriteShutdown:()Z
ifne 1
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getOriginalSourceConduit:()Lorg/xnio/conduits/StreamSourceConduit;
invokeinterface org.xnio.conduits.StreamSourceConduit.isReadShutdown:()Z
ifeq 4
1: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
2: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.suspendReads:()V
3: return
4: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getExtraBytes:()Lio/undertow/connector/PooledByteBuffer;
astore 2
start local 2 5: aload 2
ifnonnull 6
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getByteBufferPool:()Lio/undertow/connector/ByteBufferPool;
invokeinterface io.undertow.connector.ByteBufferPool.allocate:()Lio/undertow/connector/PooledByteBuffer;
goto 7
StackMap locals: io.undertow.connector.PooledByteBuffer
StackMap stack:
6: aload 2
StackMap locals:
StackMap stack: io.undertow.connector.PooledByteBuffer
7: astore 3
start local 3 8: aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.getBuffer:()Ljava/nio/ByteBuffer;
astore 4
start local 4 9: iconst_1
istore 5
start local 5 10: iconst_0
istore 6
start local 6 11: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int
StackMap stack:
aload 2
ifnonnull 20
12: aload 4
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
13: aload 1
aload 4
invokeinterface org.xnio.channels.StreamSourceChannel.read:(Ljava/nio/ByteBuffer;)I
istore 7
start local 7 14: goto 21
end local 7 StackMap locals:
StackMap stack: java.io.IOException
15: astore 8
start local 8 16: getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
aload 8
invokeinterface io.undertow.UndertowLogger.ioException:(Ljava/io/IOException;)V
17: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
18: iload 5
ifeq 19
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
19: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int top java.io.IOException
StackMap stack:
return
end local 8 20: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 7
start local 7 21: StackMap locals: int
StackMap stack:
iload 7
ifne 29
22: iload 6
ifeq 24
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
ifnull 24
23: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.failedParse:()V
24: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.isReadResumed:()Z
ifne 27
25: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
26: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.resumeReads:()V
27: StackMap locals:
StackMap stack:
iload 5
ifeq 28
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
28: StackMap locals:
StackMap stack:
return
29: StackMap locals:
StackMap stack:
iload 7
iconst_m1
if_icmpne 42
30: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.shutdownReads:()V
31: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
astore 8
start local 8 32: aload 8
invokeinterface org.xnio.channels.StreamSinkChannel.shutdownWrites:()V
33: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
end local 8 34: goto 40
StackMap locals:
StackMap stack: java.io.IOException
35: astore 8
start local 8 36: getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
aload 8
invokeinterface io.undertow.UndertowLogger.ioException:(Ljava/io/IOException;)V
37: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
38: iload 5
ifeq 39
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
39: StackMap locals: java.io.IOException
StackMap stack:
return
end local 8 40: StackMap locals:
StackMap stack:
iload 5
ifeq 41
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
41: StackMap locals:
StackMap stack:
return
42: StackMap locals:
StackMap stack:
iconst_1
istore 6
43: aload 2
ifnull 47
44: aconst_null
astore 2
45: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aconst_null
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.setExtraBytes:(Lio/undertow/connector/PooledByteBuffer;)V
46: goto 48
47: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
48: StackMap locals:
StackMap stack:
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 8
start local 8 49: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
ifnonnull 51
50: aload 0
new io.undertow.server.HttpServerExchange
dup
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.maxEntitySize:J
invokespecial io.undertow.server.HttpServerExchange.<init>:(Lio/undertow/server/ServerConnection;J)V
putfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
51: StackMap locals: int
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parser:Lio/undertow/server/protocol/ajp/AjpRequestParser;
aload 4
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.protocol.ajp.AjpRequestParser.parse:(Ljava/nio/ByteBuffer;Lio/undertow/server/protocol/ajp/AjpRequestParseState;Lio/undertow/server/HttpServerExchange;)V
52: aload 0
dup
getfield io.undertow.server.protocol.ajp.AjpReadListener.read:I
iload 8
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
isub
iadd
putfield io.undertow.server.protocol.ajp.AjpReadListener.read:I
53: aload 4
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifeq 56
54: iconst_0
istore 5
55: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aload 3
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.setExtraBytes:(Lio/undertow/connector/PooledByteBuffer;)V
56: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.read:I
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.maxRequestSize:I
if_icmple 61
57: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getPeerAddress:()Ljava/net/SocketAddress;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.maxRequestSize:I
invokeinterface io.undertow.UndertowLogger.requestHeaderWasTooLarge:(Ljava/net/SocketAddress;I)V
58: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
59: iload 5
ifeq 60
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
60: StackMap locals:
StackMap stack:
return
end local 8 61: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
invokevirtual io.undertow.server.protocol.ajp.AjpRequestParseState.isComplete:()Z
ifeq 11
62: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
ifnull 64
63: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.parseTimeoutUpdater:Lio/undertow/server/protocol/ParseTimeoutUpdater;
invokevirtual io.undertow.server.protocol.ParseTimeoutUpdater.requestStarted:()V
64: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.prefix:B
iconst_2
if_icmpeq 79
65: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.prefix:B
bipush 10
if_icmpne 69
66: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
ldc "Received CPING, sending CPONG"
invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
67: aload 0
invokevirtual io.undertow.server.protocol.ajp.AjpReadListener.handleCPing:()V
68: goto 77
StackMap locals:
StackMap stack:
69: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.prefix:B
bipush 9
if_icmpne 75
70: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
ldc "Received CPONG, starting next request"
invokeinterface io.undertow.UndertowLogger.debug:(Ljava/lang/Object;)V
71: aload 0
new io.undertow.server.protocol.ajp.AjpRequestParseState
dup
invokespecial io.undertow.server.protocol.ajp.AjpRequestParseState.<init>:()V
putfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
72: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
73: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.resumeReads:()V
74: goto 77
75: StackMap locals:
StackMap stack:
getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.prefix:B
invokeinterface io.undertow.UndertowLogger.ignoringAjpRequestWithPrefixCode:(B)V
76: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
77: StackMap locals:
StackMap stack:
iload 5
ifeq 78
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
78: StackMap locals:
StackMap stack:
return
79: StackMap locals:
StackMap stack:
aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
aconst_null
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
80: aload 1
invokeinterface org.xnio.channels.StreamSourceChannel.suspendReads:()V
81: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
astore 8
start local 8 82: new io.undertow.server.protocol.ajp.AjpServerResponseConduit
dup
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.getConduit:()Lorg/xnio/conduits/StreamSinkConduit;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getByteBufferPool:()Lio/undertow/connector/ByteBufferPool;
aload 8
new io.undertow.server.protocol.ajp.AjpReadListener$1
dup
aload 0
aload 8
invokespecial io.undertow.server.protocol.ajp.AjpReadListener$1.<init>:(Lio/undertow/server/protocol/ajp/AjpReadListener;Lio/undertow/server/HttpServerExchange;)V
83: aload 8
invokevirtual io.undertow.server.HttpServerExchange.getRequestMethod:()Lio/undertow/util/HttpString;
getstatic io.undertow.util.Methods.HEAD:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
84: invokespecial io.undertow.server.protocol.ajp.AjpServerResponseConduit.<init>:(Lorg/xnio/conduits/StreamSinkConduit;Lio/undertow/connector/ByteBufferPool;Lio/undertow/server/HttpServerExchange;Lio/undertow/conduits/ConduitListener;Z)V
astore 9
start local 9 85: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
aload 9
invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.setConduit:(Lorg/xnio/conduits/StreamSinkConduit;)V
86: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
aload 0
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.getConduit:()Lorg/xnio/conduits/StreamSourceConduit;
aload 9
aload 8
invokevirtual io.undertow.server.protocol.ajp.AjpReadListener.createSourceConduit:(Lorg/xnio/conduits/StreamSourceConduit;Lio/undertow/server/protocol/ajp/AjpServerResponseConduit;Lio/undertow/server/HttpServerExchange;)Lorg/xnio/conduits/StreamSourceConduit;
invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.setConduit:(Lorg/xnio/conduits/StreamSourceConduit;)V
87: aload 9
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.writeReadyHandler:Lorg/xnio/conduits/WriteReadyHandler$ChannelListenerHandler;
invokevirtual io.undertow.server.protocol.ajp.AjpServerResponseConduit.setWriteReadyHandler:(Lorg/xnio/conduits/WriteReadyHandler;)V
88: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
invokevirtual io.undertow.server.protocol.ajp.AjpRequestParseState.createSslSessionInfo:()Lio/undertow/server/BasicSSLSessionInfo;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.setSSLSessionInfo:(Lio/undertow/server/BasicSSLSessionInfo;)V
89: aload 8
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
invokevirtual io.undertow.server.protocol.ajp.AjpRequestParseState.createPeerAddress:()Ljava/net/InetSocketAddress;
invokevirtual io.undertow.server.HttpServerExchange.setSourceAddress:(Ljava/net/InetSocketAddress;)Lio/undertow/server/HttpServerExchange;
pop
90: aload 8
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
invokevirtual io.undertow.server.protocol.ajp.AjpRequestParseState.createDestinationAddress:()Ljava/net/InetSocketAddress;
invokevirtual io.undertow.server.HttpServerExchange.setDestinationAddress:(Ljava/net/InetSocketAddress;)Lio/undertow/server/HttpServerExchange;
pop
91: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.scheme:Ljava/lang/String;
ifnull 93
92: aload 8
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.scheme:Ljava/lang/String;
invokevirtual io.undertow.server.HttpServerExchange.setRequestScheme:(Ljava/lang/String;)Lio/undertow/server/HttpServerExchange;
pop
93: StackMap locals: io.undertow.server.HttpServerExchange io.undertow.server.protocol.ajp.AjpServerResponseConduit
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.attributes:Ljava/util/Map;
ifnull 95
94: aload 8
getstatic io.undertow.server.HttpServerExchange.REQUEST_ATTRIBUTES:Lio/undertow/util/AttachmentKey;
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.attributes:Ljava/util/Map;
invokevirtual io.undertow.server.HttpServerExchange.putAttachment:(Lio/undertow/util/AttachmentKey;Ljava/lang/Object;)Ljava/lang/Object;
pop
95: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
astore 10
start local 10 96: aload 0
aconst_null
putfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
97: aload 0
aconst_null
putfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
98: aload 8
iconst_1
invokevirtual io.undertow.server.HttpServerExchange.setPersistent:(Z)Lio/undertow/server/HttpServerExchange;
pop
99: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.recordRequestStartTime:Z
ifeq 101
100: aload 8
invokestatic io.undertow.server.Connectors.setRequestStartTime:(Lio/undertow/server/HttpServerExchange;)V
101: StackMap locals: io.undertow.server.protocol.ajp.AjpRequestParseState
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
aload 8
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.setCurrentExchange:(Lio/undertow/server/HttpServerExchange;)V
102: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
ifnull 104
103: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connectorStatistics:Lio/undertow/server/ConnectorStatisticsImpl;
aload 8
invokevirtual io.undertow.server.ConnectorStatisticsImpl.setup:(Lio/undertow/server/HttpServerExchange;)V
104: StackMap locals:
StackMap stack:
aload 8
invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
invokestatic io.undertow.server.Connectors.areRequestHeadersValid:(Lio/undertow/util/HeaderMap;)Z
ifne 107
105: aload 10
iconst_1
putfield io.undertow.server.protocol.ajp.AjpRequestParseState.badRequest:Z
106: getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
ldc "Invalid AJP request from %s, request contained invalid headers"
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getPeerAddress:()Ljava/net/SocketAddress;
invokeinterface io.undertow.UndertowLogger.debugf:(Ljava/lang/String;Ljava/lang/Object;)V
107: StackMap locals:
StackMap stack:
aload 10
getfield io.undertow.server.protocol.ajp.AjpRequestParseState.badRequest:Z
ifeq 112
108: aload 8
sipush 400
invokevirtual io.undertow.server.HttpServerExchange.setStatusCode:(I)Lio/undertow/server/HttpServerExchange;
pop
109: aload 8
invokevirtual io.undertow.server.HttpServerExchange.endExchange:()Lio/undertow/server/HttpServerExchange;
pop
110: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
111: goto 131
112: StackMap locals:
StackMap stack:
aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getRootHandler:()Lio/undertow/server/HttpHandler;
aload 8
invokestatic io.undertow.server.Connectors.executeRootHandler:(Lio/undertow/server/HttpHandler;Lio/undertow/server/HttpServerExchange;)V
end local 10 113: goto 131
StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int int io.undertow.server.HttpServerExchange io.undertow.server.protocol.ajp.AjpServerResponseConduit
StackMap stack: java.lang.Throwable
114: astore 10
start local 10 115: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
aload 10
invokeinterface io.undertow.UndertowLogger.exceptionProcessingRequest:(Ljava/lang/Throwable;)V
116: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
end local 10 end local 9 end local 8 end local 7 117: goto 131
StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int
StackMap stack: io.undertow.util.BadRequestException
118: astore 7
start local 7 119: getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
aload 7
invokeinterface io.undertow.UndertowLogger.failedToParseRequest:(Ljava/lang/Throwable;)V
120: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
sipush 400
invokevirtual io.undertow.server.HttpServerExchange.setStatusCode:(I)Lio/undertow/server/HttpServerExchange;
pop
121: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
invokevirtual io.undertow.server.HttpServerExchange.endExchange:()Lio/undertow/server/HttpServerExchange;
pop
122: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
end local 7 123: iload 5
ifeq 132
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
goto 132
124: StackMap locals:
StackMap stack: java.lang.Exception
astore 7
start local 7 125: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
aload 7
invokeinterface io.undertow.UndertowLogger.exceptionProcessingRequest:(Ljava/lang/Throwable;)V
126: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
end local 7 127: iload 5
ifeq 132
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
goto 132
128: StackMap locals:
StackMap stack: java.lang.Throwable
astore 11
129: iload 5
ifeq 130
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
130: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int top top top top java.lang.Throwable
StackMap stack:
aload 11
athrow
131: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.channels.StreamSourceChannel io.undertow.connector.PooledByteBuffer io.undertow.connector.PooledByteBuffer java.nio.ByteBuffer int int
StackMap stack:
iload 5
ifeq 132
aload 3
invokeinterface io.undertow.connector.PooledByteBuffer.close:()V
132: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 133 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
0 133 1 channel Lorg/xnio/channels/StreamSourceChannel;
5 133 2 existing Lio/undertow/connector/PooledByteBuffer;
8 133 3 pooled Lio/undertow/connector/PooledByteBuffer;
9 133 4 buffer Ljava/nio/ByteBuffer;
10 133 5 free Z
11 133 6 bytesRead Z
14 15 7 res I
21 117 7 res I
16 20 8 e Ljava/io/IOException;
32 34 8 responseChannel Lorg/xnio/channels/StreamSinkChannel;
36 40 8 e Ljava/io/IOException;
49 61 8 begin I
82 117 8 httpServerExchange Lio/undertow/server/HttpServerExchange;
85 117 9 responseConduit Lio/undertow/server/protocol/ajp/AjpServerResponseConduit;
96 113 10 oldState Lio/undertow/server/protocol/ajp/AjpRequestParseState;
115 117 10 t Ljava/lang/Throwable;
119 123 7 e Lio/undertow/util/BadRequestException;
125 127 7 e Ljava/lang/Exception;
Exception table:
from to target type
13 14 15 Class java.io.IOException
30 34 35 Class java.io.IOException
88 113 114 Class java.lang.Throwable
11 18 118 Class io.undertow.util.BadRequestException
20 27 118 Class io.undertow.util.BadRequestException
29 38 118 Class io.undertow.util.BadRequestException
42 59 118 Class io.undertow.util.BadRequestException
61 77 118 Class io.undertow.util.BadRequestException
79 117 118 Class io.undertow.util.BadRequestException
11 18 124 Class java.lang.Exception
20 27 124 Class java.lang.Exception
29 38 124 Class java.lang.Exception
42 59 124 Class java.lang.Exception
61 77 124 Class java.lang.Exception
79 117 124 Class java.lang.Exception
11 18 128 any
20 27 128 any
29 38 128 any
42 59 128 any
61 77 128 any
79 123 128 any
124 127 128 any
MethodParameters:
Name Flags
channel final
private void handleCPing();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=5, args_size=1
start local 0 0: aload 0
new io.undertow.server.protocol.ajp.AjpRequestParseState
dup
invokespecial io.undertow.server.protocol.ajp.AjpRequestParseState.<init>:()V
putfield io.undertow.server.protocol.ajp.AjpReadListener.state:Lio/undertow/server/protocol/ajp/AjpRequestParseState;
1: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
astore 1
start local 1 2: aload 1
invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.suspendReads:()V
3: getstatic io.undertow.server.protocol.ajp.AjpReadListener.CPONG:[B
invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
astore 2
start local 2 4: StackMap locals: org.xnio.StreamConnection java.nio.ByteBuffer
StackMap stack:
aload 1
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
aload 2
invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.write:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 5: iload 3
ifne 9
6: aload 1
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
new io.undertow.server.protocol.ajp.AjpReadListener$2
dup
aload 0
aload 2
aload 1
invokespecial io.undertow.server.protocol.ajp.AjpReadListener$2.<init>:(Lio/undertow/server/protocol/ajp/AjpReadListener;Ljava/nio/ByteBuffer;Lorg/xnio/StreamConnection;)V
invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.setWriteListener:(Lorg/xnio/ChannelListener;)V
7: aload 1
invokevirtual org.xnio.StreamConnection.getSinkChannel:()Lorg/xnio/conduits/ConduitStreamSinkChannel;
invokevirtual org.xnio.conduits.ConduitStreamSinkChannel.resumeWrites:()V
8: return
9: StackMap locals: int
StackMap stack:
aload 2
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 4
10: aload 0
aload 1
invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
invokevirtual io.undertow.server.protocol.ajp.AjpReadListener.handleEvent:(Lorg/xnio/channels/StreamSourceChannel;)V
11: goto 15
end local 3 StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.StreamConnection java.nio.ByteBuffer
StackMap stack: java.io.IOException
12: astore 4
start local 4 13: getstatic io.undertow.UndertowLogger.REQUEST_IO_LOGGER:Lio/undertow/UndertowLogger;
aload 4
invokeinterface io.undertow.UndertowLogger.ioException:(Ljava/io/IOException;)V
14: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.connection:Lio/undertow/server/protocol/ajp/AjpServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
end local 4 15: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
2 16 1 underlyingChannel Lorg/xnio/StreamConnection;
4 16 2 buffer Ljava/nio/ByteBuffer;
5 12 3 res I
13 15 4 e Ljava/io/IOException;
Exception table:
from to target type
4 8 12 Class java.io.IOException
9 11 12 Class java.io.IOException
public void exchangeComplete(io.undertow.server.HttpServerExchange);
descriptor: (Lio/undertow/server/HttpServerExchange;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual io.undertow.server.HttpServerExchange.isUpgrade:()Z
ifne 6
aload 1
invokevirtual io.undertow.server.HttpServerExchange.isPersistent:()Z
ifeq 6
1: aload 0
invokevirtual io.undertow.server.protocol.ajp.AjpReadListener.startRequest:()V
2: aload 1
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
checkcast io.undertow.server.protocol.ajp.AjpServerConnection
invokevirtual io.undertow.server.protocol.ajp.AjpServerConnection.getChannel:()Lorg/xnio/StreamConnection;
invokevirtual org.xnio.StreamConnection.getSourceChannel:()Lorg/xnio/conduits/ConduitStreamSourceChannel;
astore 2
start local 2 3: aload 2
invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.getReadSetter:()Lorg/xnio/ChannelListener$Setter;
aload 0
invokeinterface org.xnio.ChannelListener$Setter.set:(Lorg/xnio/ChannelListener;)V
4: aload 2
invokevirtual org.xnio.conduits.ConduitStreamSourceChannel.wakeupReads:()V
end local 2 5: goto 8
StackMap locals:
StackMap stack:
6: aload 1
invokevirtual io.undertow.server.HttpServerExchange.isPersistent:()Z
ifne 8
7: aload 1
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
invokestatic org.xnio.IoUtils.safeClose:(Ljava/io/Closeable;)V
8: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
0 9 1 exchange Lio/undertow/server/HttpServerExchange;
3 5 2 channel Lorg/xnio/conduits/ConduitStreamSourceChannel;
MethodParameters:
Name Flags
exchange final
private org.xnio.conduits.StreamSourceConduit createSourceConduit(org.xnio.conduits.StreamSourceConduit, io.undertow.server.protocol.ajp.AjpServerResponseConduit, io.undertow.server.HttpServerExchange);
descriptor: (Lorg/xnio/conduits/StreamSourceConduit;Lio/undertow/server/protocol/ajp/AjpServerResponseConduit;Lio/undertow/server/HttpServerExchange;)Lorg/xnio/conduits/StreamSourceConduit;
flags: (0x0002) ACC_PRIVATE
Code:
stack=10, locals=13, args_size=4
start local 0 start local 1 start local 2 start local 3 0: new io.undertow.conduits.ReadDataStreamSourceConduit
dup
aload 1
aload 3
invokevirtual io.undertow.server.HttpServerExchange.getConnection:()Lio/undertow/server/ServerConnection;
checkcast io.undertow.server.AbstractServerConnection
invokespecial io.undertow.conduits.ReadDataStreamSourceConduit.<init>:(Lorg/xnio/conduits/StreamSourceConduit;Lio/undertow/server/AbstractServerConnection;)V
astore 4
start local 4 1: aload 3
invokevirtual io.undertow.server.HttpServerExchange.getRequestHeaders:()Lio/undertow/util/HeaderMap;
astore 5
start local 5 2: getstatic io.undertow.util.Headers.IDENTITY:Lio/undertow/util/HttpString;
astore 6
start local 6 3: aload 5
getstatic io.undertow.util.Headers.TRANSFER_ENCODING:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HeaderMap.getLast:(Lio/undertow/util/HttpString;)Ljava/lang/String;
astore 8
start local 8 4: aload 8
ifnull 5
iconst_1
goto 6
StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.conduits.StreamSourceConduit io.undertow.server.protocol.ajp.AjpServerResponseConduit io.undertow.server.HttpServerExchange io.undertow.conduits.ReadDataStreamSourceConduit io.undertow.util.HeaderMap io.undertow.util.HttpString top java.lang.String
StackMap stack:
5: iconst_0
StackMap locals:
StackMap stack: int
6: istore 9
start local 9 7: iload 9
ifeq 9
8: new io.undertow.util.HttpString
dup
aload 8
invokespecial io.undertow.util.HttpString.<init>:(Ljava/lang/String;)V
astore 6
9: StackMap locals: int
StackMap stack:
aload 5
getstatic io.undertow.util.Headers.CONTENT_LENGTH:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HeaderMap.getFirst:(Lio/undertow/util/HttpString;)Ljava/lang/String;
astore 10
start local 10 10: iload 9
ifeq 13
aload 6
getstatic io.undertow.util.Headers.IDENTITY:Lio/undertow/util/HttpString;
invokevirtual io.undertow.util.HttpString.equals:(Lio/undertow/util/HttpString;)Z
ifne 13
11: aconst_null
astore 7
start local 7 12: goto 27
end local 7 StackMap locals: java.lang.String
StackMap stack:
13: aload 10
ifnull 24
14: aload 10
invokestatic java.lang.Long.parseLong:(Ljava/lang/String;)J
lstore 11
start local 11 15: lload 11
lconst_0
lcmp
ifne 20
16: getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
ldc "No content, starting next request"
invokeinterface io.undertow.UndertowLogger.trace:(Ljava/lang/Object;)V
17: aload 0
getfield io.undertow.server.protocol.ajp.AjpReadListener.httpServerExchange:Lio/undertow/server/HttpServerExchange;
invokestatic io.undertow.server.Connectors.terminateRequest:(Lio/undertow/server/HttpServerExchange;)V
18: new io.undertow.conduits.EmptyStreamSourceConduit
dup
aload 4
invokevirtual io.undertow.conduits.ReadDataStreamSourceConduit.getReadThread:()Lorg/xnio/XnioIoThread;
invokespecial io.undertow.conduits.EmptyStreamSourceConduit.<init>:(Lorg/xnio/XnioIoThread;)V
19: areturn
20: StackMap locals: long
StackMap stack:
lload 11
invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
astore 7
end local 11 start local 7 21: goto 27
end local 7 StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.conduits.StreamSourceConduit io.undertow.server.protocol.ajp.AjpServerResponseConduit io.undertow.server.HttpServerExchange io.undertow.conduits.ReadDataStreamSourceConduit io.undertow.util.HeaderMap io.undertow.util.HttpString top java.lang.String int java.lang.String
StackMap stack: java.lang.NumberFormatException
22: astore 11
start local 11 23: new io.undertow.util.BadRequestException
dup
ldc "Invalid Content-Length header"
aload 11
invokespecial io.undertow.util.BadRequestException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 11 24: StackMap locals:
StackMap stack:
getstatic io.undertow.UndertowLogger.REQUEST_LOGGER:Lio/undertow/UndertowLogger;
ldc "No content length or transfer coding, starting next request"
invokeinterface io.undertow.UndertowLogger.trace:(Ljava/lang/Object;)V
25: aload 3
invokestatic io.undertow.server.Connectors.terminateRequest:(Lio/undertow/server/HttpServerExchange;)V
26: new io.undertow.conduits.EmptyStreamSourceConduit
dup
aload 4
invokevirtual io.undertow.conduits.ReadDataStreamSourceConduit.getReadThread:()Lorg/xnio/XnioIoThread;
invokespecial io.undertow.conduits.EmptyStreamSourceConduit.<init>:(Lorg/xnio/XnioIoThread;)V
areturn
start local 7 27: StackMap locals: io.undertow.server.protocol.ajp.AjpReadListener org.xnio.conduits.StreamSourceConduit io.undertow.server.protocol.ajp.AjpServerResponseConduit io.undertow.server.HttpServerExchange io.undertow.conduits.ReadDataStreamSourceConduit io.undertow.util.HeaderMap io.undertow.util.HttpString java.lang.Long java.lang.String int java.lang.String
StackMap stack:
new io.undertow.server.protocol.ajp.AjpServerRequestConduit
dup
aload 4
aload 3
aload 2
aload 7
new io.undertow.server.protocol.ajp.AjpReadListener$3
dup
aload 0
aload 3
invokespecial io.undertow.server.protocol.ajp.AjpReadListener$3.<init>:(Lio/undertow/server/protocol/ajp/AjpReadListener;Lio/undertow/server/HttpServerExchange;)V
invokespecial io.undertow.server.protocol.ajp.AjpServerRequestConduit.<init>:(Lorg/xnio/conduits/StreamSourceConduit;Lio/undertow/server/HttpServerExchange;Lio/undertow/server/protocol/ajp/AjpServerResponseConduit;Ljava/lang/Long;Lio/undertow/conduits/ConduitListener;)V
areturn
end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lio/undertow/server/protocol/ajp/AjpReadListener;
0 28 1 underlyingConduit Lorg/xnio/conduits/StreamSourceConduit;
0 28 2 responseConduit Lio/undertow/server/protocol/ajp/AjpServerResponseConduit;
0 28 3 exchange Lio/undertow/server/HttpServerExchange;
1 28 4 conduit Lio/undertow/conduits/ReadDataStreamSourceConduit;
2 28 5 requestHeaders Lio/undertow/util/HeaderMap;
3 28 6 transferEncoding Lio/undertow/util/HttpString;
12 13 7 length Ljava/lang/Long;
21 22 7 length Ljava/lang/Long;
27 28 7 length Ljava/lang/Long;
4 28 8 teHeader Ljava/lang/String;
7 28 9 hasTransferEncoding Z
10 28 10 requestContentLength Ljava/lang/String;
15 21 11 contentLength J
23 24 11 e Ljava/lang/NumberFormatException;
Exception table:
from to target type
14 19 22 Class java.lang.NumberFormatException
20 21 22 Class java.lang.NumberFormatException
Exceptions:
throws io.undertow.util.BadRequestException
MethodParameters:
Name Flags
underlyingConduit
responseConduit
exchange final
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: aload 0
aload 1
checkcast org.xnio.channels.StreamSourceChannel
invokevirtual io.undertow.server.protocol.ajp.AjpReadListener.handleEvent:(Lorg/xnio/channels/StreamSourceChannel;)V
return
LocalVariableTable:
Start End Slot Name Signature
}
Signature: Ljava/lang/Object;Lorg/xnio/ChannelListener<Lorg/xnio/channels/StreamSourceChannel;>;
SourceFile: "AjpReadListener.java"
NestMembers:
io.undertow.server.protocol.ajp.AjpReadListener$1 io.undertow.server.protocol.ajp.AjpReadListener$2 io.undertow.server.protocol.ajp.AjpReadListener$3
InnerClasses:
public ConduitState = io.undertow.server.AbstractServerConnection$ConduitState of io.undertow.server.AbstractServerConnection
public abstract CloseListener = io.undertow.server.ServerConnection$CloseListener of io.undertow.server.ServerConnection
io.undertow.server.protocol.ajp.AjpReadListener$1
io.undertow.server.protocol.ajp.AjpReadListener$2
io.undertow.server.protocol.ajp.AjpReadListener$3
public abstract Setter = org.xnio.ChannelListener$Setter of org.xnio.ChannelListener
public ChannelListenerHandler = org.xnio.conduits.WriteReadyHandler$ChannelListenerHandler of org.xnio.conduits.WriteReadyHandler