public class org.apache.tomcat.util.net.SecureNioChannel extends org.apache.tomcat.util.net.NioChannel
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.apache.tomcat.util.net.SecureNioChannel
super_class: org.apache.tomcat.util.net.NioChannel
{
private static final org.apache.juli.logging.Log log;
descriptor: Lorg/apache/juli/logging/Log;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final org.apache.tomcat.util.res.StringManager sm;
descriptor: Lorg/apache/tomcat/util/res/StringManager;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int DEFAULT_NET_BUFFER_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 16921
private final org.apache.tomcat.util.net.NioEndpoint endpoint;
descriptor: Lorg/apache/tomcat/util/net/NioEndpoint;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
protected java.nio.ByteBuffer netInBuffer;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0004) ACC_PROTECTED
protected java.nio.ByteBuffer netOutBuffer;
descriptor: Ljava/nio/ByteBuffer;
flags: (0x0004) ACC_PROTECTED
protected javax.net.ssl.SSLEngine sslEngine;
descriptor: Ljavax/net/ssl/SSLEngine;
flags: (0x0004) ACC_PROTECTED
protected boolean sniComplete;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
protected boolean handshakeComplete;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
protected javax.net.ssl.SSLEngineResult$HandshakeStatus handshakeStatus;
descriptor: Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
flags: (0x0004) ACC_PROTECTED
protected boolean closed;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
protected boolean closing;
descriptor: Z
flags: (0x0004) ACC_PROTECTED
private static volatile int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
private static volatile int[] ;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lorg/apache/tomcat/util/net/SecureNioChannel;
invokestatic org.apache.juli.logging.LogFactory.getLog:(Ljava/lang/Class;)Lorg/apache/juli/logging/Log;
putstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
1: ldc Lorg/apache/tomcat/util/net/SecureNioChannel;
invokestatic org.apache.tomcat.util.res.StringManager.getManager:(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
putstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
2: return
LocalVariableTable:
Start End Slot Name Signature
public void <init>(org.apache.tomcat.util.net.SocketBufferHandler, org.apache.tomcat.util.net.NioEndpoint);
descriptor: (Lorg/apache/tomcat/util/net/SocketBufferHandler;Lorg/apache/tomcat/util/net/NioEndpoint;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial org.apache.tomcat.util.net.NioChannel.<init>:(Lorg/apache/tomcat/util/net/SocketBufferHandler;)V
1: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
2: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
3: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
4: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
5: aload 2
invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSocketProperties:()Lorg/apache/tomcat/util/net/SocketProperties;
invokevirtual org.apache.tomcat.util.net.SocketProperties.getDirectSslBuffer:()Z
ifeq 9
6: aload 0
sipush 16921
invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
7: aload 0
sipush 16921
invokestatic java.nio.ByteBuffer.allocateDirect:(I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
8: goto 11
9: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel org.apache.tomcat.util.net.SocketBufferHandler org.apache.tomcat.util.net.NioEndpoint
StackMap stack:
aload 0
sipush 16921
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
10: aload 0
sipush 16921
invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
11: StackMap locals:
StackMap stack:
aload 0
aload 2
putfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 13 1 bufHandler Lorg/apache/tomcat/util/net/SocketBufferHandler;
0 13 2 endpoint Lorg/apache/tomcat/util/net/NioEndpoint;
MethodParameters:
Name Flags
bufHandler
endpoint
public void reset(java.nio.channels.SocketChannel, org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper);
descriptor: (Ljava/nio/channels/SocketChannel;Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial org.apache.tomcat.util.net.NioChannel.reset:(Ljava/nio/channels/SocketChannel;Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;)V
1: aload 0
aconst_null
putfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
2: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
3: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
4: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
5: aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
6: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 8 1 channel Ljava/nio/channels/SocketChannel;
0 8 2 socketWrapper Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
channel
socketWrapper
public void free();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial org.apache.tomcat.util.net.NioChannel.free:()V
1: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSocketProperties:()Lorg/apache/tomcat/util/net/SocketProperties;
invokevirtual org.apache.tomcat.util.net.SocketProperties.getDirectSslBuffer:()Z
ifeq 4
2: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.cleanDirectBuffer:(Ljava/nio/ByteBuffer;)V
3: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.cleanDirectBuffer:(Ljava/nio/ByteBuffer;)V
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
protected boolean flush(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 2
start local 2 1: iload 2
ifle 4
2: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 1
invokevirtual java.nio.channels.SocketChannel.write:(Ljava/nio/ByteBuffer;)I
iload 2
if_icmplt 3
iconst_1
ireturn
StackMap locals: int
StackMap stack:
3: iconst_0
ireturn
4: StackMap locals:
StackMap stack:
iconst_1
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 5 1 buf Ljava/nio/ByteBuffer;
1 5 2 remaining I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
buf
public int handshake(boolean, boolean);
descriptor: (ZZ)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ifeq 2
1: iconst_0
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
ifne 8
3: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.processSNI:()I
istore 3
start local 3 4: iload 3
ifne 7
5: aload 0
iconst_1
putfield org.apache.tomcat.util.net.SecureNioChannel.sniComplete:Z
6: goto 8
7: StackMap locals: int
StackMap stack:
iload 3
ireturn
end local 3 8: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
ifne 10
9: iconst_4
ireturn
10: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 11: goto 57
12: StackMap locals: javax.net.ssl.SSLEngineResult
StackMap stack:
invokestatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:()[I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iaload
tableswitch { // 1 - 5
1: 13
2: 14
3: 54
4: 30
5: 46
default: 56
}
13: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.notHandshaking"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
invokevirtual org.apache.tomcat.util.net.NioEndpoint.hasNegotiableProtocols:()Z
ifeq 24
15: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
instanceof org.apache.tomcat.util.net.SSLUtil$ProtocolInfo
ifeq 20
16: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.socketWrapper:Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
17: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
checkcast org.apache.tomcat.util.net.SSLUtil$ProtocolInfo
invokeinterface org.apache.tomcat.util.net.SSLUtil$ProtocolInfo.getNegotiatedProtocol:()Ljava/lang/String;
18: invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.setNegotiatedProtocol:(Ljava/lang/String;)V
19: goto 24
StackMap locals:
StackMap stack:
20: invokestatic org.apache.tomcat.util.compat.JreCompat.isAlpnSupported:()Z
ifeq 24
21: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.socketWrapper:Lorg/apache/tomcat/util/net/NioEndpoint$NioSocketWrapper;
22: invokestatic org.apache.tomcat.util.compat.JreCompat.getInstance:()Lorg/apache/tomcat/util/compat/JreCompat;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual org.apache.tomcat.util.compat.JreCompat.getApplicationProtocol:(Ljavax/net/ssl/SSLEngine;)Ljava/lang/String;
23: invokevirtual org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.setNegotiatedProtocol:(Ljava/lang/String;)V
24: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifeq 25
iconst_0
goto 26
StackMap locals:
StackMap stack: org.apache.tomcat.util.net.SecureNioChannel
25: iconst_1
StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int int javax.net.ssl.SSLEngineResult
StackMap stack: org.apache.tomcat.util.net.SecureNioChannel int
26: putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
27: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ifeq 28
iconst_0
goto 29
StackMap locals:
StackMap stack:
28: iconst_4
StackMap locals:
StackMap stack: int
29: ireturn
30: StackMap locals:
StackMap stack:
aload 0
iload 2
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap:(Z)Ljavax/net/ssl/SSLEngineResult;
astore 3
31: goto 36
StackMap locals:
StackMap stack: javax.net.ssl.SSLException
32: astore 4
start local 4 33: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 35
34: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.wrapException"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 4
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
35: StackMap locals: javax.net.ssl.SSLException
StackMap stack:
aload 0
iload 2
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeWrap:(Z)Ljavax/net/ssl/SSLEngineResult;
astore 3
end local 4 36: StackMap locals:
StackMap stack:
aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 40
37: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 44
38: aload 0
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
39: goto 44
StackMap locals:
StackMap stack:
40: aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.CLOSED:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 43
41: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
42: iconst_m1
ireturn
43: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unexpectedStatusDuringWrap"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 45
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
ifne 46
45: StackMap locals:
StackMap stack:
iconst_4
ireturn
46: StackMap locals:
StackMap stack:
aload 0
iload 1
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshakeUnwrap:(Z)Ljavax/net/ssl/SSLEngineResult;
astore 3
47: aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 51
48: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 57
49: aload 0
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
50: goto 57
StackMap locals:
StackMap stack:
51: aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 53
52: iconst_1
ireturn
53: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unexpectedStatusDuringWrap"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 3
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
54: StackMap locals:
StackMap stack:
aload 0
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
55: goto 57
56: StackMap locals:
StackMap stack:
new java.lang.IllegalStateException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.invalidStatus"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
57: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ifeq 12
58: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 59 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 59 1 read Z
0 59 2 write Z
4 8 3 sniResult I
11 59 3 handshake Ljavax/net/ssl/SSLEngineResult;
33 36 4 e Ljavax/net/ssl/SSLException;
Exception table:
from to target type
30 31 32 Class javax.net.ssl.SSLException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
read
write
private int processSNI();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=6, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
istore 1
start local 1 1: iload 1
iconst_m1
if_icmpne 3
2: iconst_m1
ireturn
3: StackMap locals: int
StackMap stack:
new org.apache.tomcat.util.net.TLSClientHelloExtractor
dup
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokespecial org.apache.tomcat.util.net.TLSClientHelloExtractor.<init>:(Ljava/nio/ByteBuffer;)V
astore 2
start local 2 4: goto 12
5: StackMap locals: org.apache.tomcat.util.net.TLSClientHelloExtractor
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
iconst_2
imul
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSniParseLimit:()I
invokestatic java.lang.Math.min:(II)I
istore 3
start local 3 6: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.expandNetInBuffer"
iconst_1
anewarray java.lang.Object
dup
iconst_0
7: iload 3
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
aastore
8: invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.info:(Ljava/lang/Object;)V
9: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
iload 3
invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
10: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
pop
11: new org.apache.tomcat.util.net.TLSClientHelloExtractor
dup
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokespecial org.apache.tomcat.util.net.TLSClientHelloExtractor.<init>:(Ljava/nio/ByteBuffer;)V
astore 2
end local 3 12: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getResult:()Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.UNDERFLOW:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
if_acmpne 15
13: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
invokevirtual org.apache.tomcat.util.net.NioEndpoint.getSniParseLimit:()I
14: if_icmplt 5
15: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 16: aconst_null
astore 4
start local 4 17: aconst_null
astore 5
start local 5 18: invokestatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:()[I
aload 2
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getResult:()Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iaload
tableswitch { // 1 - 5
1: 19
2: 22
3: 25
4: 24
5: 30
default: 35
}
19: StackMap locals: java.lang.String java.util.List java.util.List
StackMap stack:
aload 2
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getSNIValue:()Ljava/lang/String;
astore 3
20: aload 2
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getClientRequestedApplicationProtocols:()Ljava/util/List;
21: astore 5
22: StackMap locals:
StackMap stack:
aload 2
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor.getClientRequestedCiphers:()Ljava/util/List;
astore 4
23: goto 35
24: StackMap locals:
StackMap stack:
iconst_1
ireturn
25: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 27
26: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.sniDefault"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
27: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
invokevirtual org.apache.tomcat.util.net.NioEndpoint.getDefaultSSLHostConfigName:()Ljava/lang/String;
astore 3
28: invokestatic java.util.Collections.emptyList:()Ljava/util/List;
astore 4
29: goto 35
30: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
31: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor.USE_TLS_RESPONSE:[B
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
32: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
33: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flushOutbound:()Z
pop
34: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.foundHttp"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals:
StackMap stack:
getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
invokeinterface org.apache.juli.logging.Log.isDebugEnabled:()Z
ifeq 37
36: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.sniHostName"
iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aastore
dup
iconst_1
aload 3
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;)V
37: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.endpoint:Lorg/apache/tomcat/util/net/NioEndpoint;
aload 3
aload 4
38: aload 5
39: invokevirtual org.apache.tomcat.util.net.NioEndpoint.createSSLEngine:(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Ljavax/net/ssl/SSLEngine;
putfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
40: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
41: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.capacity:()I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
if_icmpge 45
42: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.expandNetOutBuffer"
iconst_1
anewarray java.lang.Object
dup
iconst_0
43: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokestatic java.lang.Integer.toString:(I)Ljava/lang/String;
aastore
44: invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokeinterface org.apache.juli.logging.Log.info:(Ljava/lang/Object;)V
45: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
46: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getPacketBufferSize:()I
invokestatic org.apache.tomcat.util.buf.ByteBufferUtils.expand:(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
putfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
47: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
iconst_0
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
48: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
iconst_0
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
49: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.beginHandshake:()V
50: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
51: iconst_0
ireturn
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 52 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
1 52 1 bytesRead I
4 52 2 extractor Lorg/apache/tomcat/util/net/TLSClientHelloExtractor;
6 12 3 newLimit I
16 52 3 hostName Ljava/lang/String;
17 52 4 clientRequestedCiphers Ljava/util/List<Lorg/apache/tomcat/util/net/openssl/ciphers/Cipher;>;
18 52 5 clientRequestedApplicationProtocols Ljava/util/List<Ljava/lang/String;>;
Exceptions:
throws java.io.IOException
public void rehandshake(long);
descriptor: (J)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=13, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
ifle 2
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.limit:()I
if_icmpge 2
1: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.netInputNotEmpty"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
ifle 4
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.limit:()I
if_icmpge 4
3: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.netOutputNotEmpty"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isReadBufferEmpty:()Z
ifne 6
5: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.appInputNotEmpty"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.isWriteBufferEmpty:()Z
ifne 8
7: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.appOutputNotEmpty"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
9: iconst_0
istore 3
start local 3 10: iconst_0
istore 4
start local 4 11: iconst_1
istore 5
start local 5 12: aconst_null
astore 6
start local 6 13: aconst_null
astore 7
start local 7 14: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.beginHandshake:()V
15: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
16: goto 33
17: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey
StackMap stack:
aload 0
iload 3
iload 4
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.handshake:(ZZ)I
istore 8
start local 8 18: iload 8
tableswitch { // -1 - 0
-1: 19
0: 20
default: 22
}
19: StackMap locals: int
StackMap stack:
new java.io.EOFException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.eofDuringHandshake"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.EOFException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
iconst_0
istore 5
21: goto 33
22: StackMap locals:
StackMap stack:
invokestatic java.lang.System.currentTimeMillis:()J
lstore 9
start local 9 23: aload 6
ifnonnull 27
24: invokestatic java.nio.channels.Selector.open:()Ljava/nio/channels/Selector;
astore 6
25: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getIOChannel:()Ljava/nio/channels/SocketChannel;
aload 6
iload 8
invokevirtual java.nio.channels.SocketChannel.register:(Ljava/nio/channels/Selector;I)Ljava/nio/channels/SelectionKey;
astore 7
26: goto 28
27: StackMap locals: long
StackMap stack:
aload 7
iload 8
invokevirtual java.nio.channels.SelectionKey.interestOps:(I)Ljava/nio/channels/SelectionKey;
pop
28: StackMap locals:
StackMap stack:
aload 6
lload 1
invokevirtual java.nio.channels.Selector.select:(J)I
istore 11
start local 11 29: iload 11
ifne 31
invokestatic java.lang.System.currentTimeMillis:()J
lload 9
lsub
lload 1
lcmp
iflt 31
30: new java.net.SocketTimeoutException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.timeoutDuringHandshake"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.net.SocketTimeoutException.<init>:(Ljava/lang/String;)V
athrow
31: StackMap locals: int
StackMap stack:
aload 7
invokevirtual java.nio.channels.SelectionKey.isReadable:()Z
istore 3
32: aload 7
invokevirtual java.nio.channels.SelectionKey.isWritable:()Z
istore 4
end local 11 end local 9 end local 8 33: StackMap locals:
StackMap stack:
iload 5
ifne 17
34: goto 52
StackMap locals:
StackMap stack: java.io.IOException
35: astore 8
start local 8 36: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.closeSilently:()V
37: aload 8
athrow
end local 8 38: StackMap locals:
StackMap stack: java.lang.Exception
astore 8
start local 8 39: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.closeSilently:()V
40: new java.io.IOException
dup
aload 8
invokespecial java.io.IOException.<init>:(Ljava/lang/Throwable;)V
astore 9
start local 9 41: aload 9
athrow
end local 9 end local 8 42: StackMap locals:
StackMap stack: java.lang.Throwable
astore 12
43: aload 7
ifnull 47
44: aload 7
invokevirtual java.nio.channels.SelectionKey.cancel:()V
45: goto 47
StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey top top top top java.lang.Throwable
StackMap stack: java.lang.Exception
46: pop
47: StackMap locals:
StackMap stack:
aload 6
ifnull 51
48: aload 6
invokevirtual java.nio.channels.Selector.close:()V
49: goto 51
StackMap locals:
StackMap stack: java.lang.Exception
50: pop
51: StackMap locals:
StackMap stack:
aload 12
athrow
52: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel long int int int java.nio.channels.Selector java.nio.channels.SelectionKey
StackMap stack:
aload 7
ifnull 56
53: aload 7
invokevirtual java.nio.channels.SelectionKey.cancel:()V
54: goto 56
StackMap locals:
StackMap stack: java.lang.Exception
55: pop
56: StackMap locals:
StackMap stack:
aload 6
ifnull 60
57: aload 6
invokevirtual java.nio.channels.Selector.close:()V
58: goto 60
StackMap locals:
StackMap stack: java.lang.Exception
59: pop
60: StackMap locals:
StackMap stack:
return
end local 7 end local 6 end local 5 end local 4 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 61 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 61 1 timeout J
10 61 3 isReadable Z
11 61 4 isWriteable Z
12 61 5 handshaking Z
13 61 6 selector Ljava/nio/channels/Selector;
14 61 7 key Ljava/nio/channels/SelectionKey;
18 33 8 hsStatus I
23 33 9 now J
29 33 11 keyCount I
36 38 8 x Ljava/io/IOException;
39 42 8 cx Ljava/lang/Exception;
41 42 9 x Ljava/io/IOException;
Exception table:
from to target type
14 34 35 Class java.io.IOException
14 34 38 Class java.lang.Exception
14 42 42 any
44 45 46 Class java.lang.Exception
48 49 50 Class java.lang.Exception
53 54 55 Class java.lang.Exception
57 58 59 Class java.lang.Exception
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
timeout
protected javax.net.ssl.SSLEngineResult$HandshakeStatus tasks();
descriptor: ()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: goto 3
2: StackMap locals: java.lang.Runnable
StackMap stack:
aload 1
invokeinterface java.lang.Runnable.run:()V
3: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getDelegatedTask:()Ljava/lang/Runnable;
dup
astore 1
ifnonnull 2
4: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
1 5 1 r Ljava/lang/Runnable;
protected javax.net.ssl.SSLEngineResult handshakeWrap(boolean);
descriptor: (Z)Ljavax/net/ssl/SSLEngineResult;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
1: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureWriteBufferForRead:()V
2: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getWriteBuffer:()Ljava/nio/ByteBuffer;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 2
start local 2 3: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
4: aload 0
aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
5: iload 1
ifeq 7
6: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
7: StackMap locals: javax.net.ssl.SSLEngineResult
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 8 1 doWrite Z
3 8 2 result Ljavax/net/ssl/SSLEngineResult;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
doWrite
protected javax.net.ssl.SSLEngineResult handshakeUnwrap(boolean);
descriptor: (Z)Ljavax/net/ssl/SSLEngineResult;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.limit:()I
if_icmpne 2
1: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
2: StackMap locals:
StackMap stack:
iload 1
ifeq 6
3: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
istore 2
start local 2 4: iload 2
iconst_m1
if_icmpne 6
5: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.eofDuringHandshake"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
end local 2 6: StackMap locals:
StackMap stack:
iconst_0
istore 3
start local 3 7: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int top int
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
8: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
9: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 2
start local 2 10: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
pop
11: aload 0
aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
12: aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 15
13: aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 15
14: aload 0
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
putfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
15: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel int javax.net.ssl.SSLEngineResult int
StackMap stack:
aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 18
16: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 18
17: iconst_1
goto 19
StackMap locals:
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 3
20: iload 3
ifne 7
21: aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 22 1 doread Z
4 6 2 read I
10 22 2 result Ljavax/net/ssl/SSLEngineResult;
7 22 3 cont Z
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
doread
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
3: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.closeOutbound:()V
4: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
ifne 6
5: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.remainingDataDuringClose"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
7: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getEmptyBuf:()Ljava/nio/ByteBuffer;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 1
start local 1 8: aload 1
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.CLOSED:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpeq 10
9: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.invalidCloseState"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: javax.net.ssl.SSLEngineResult
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
11: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
12: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 13
aload 1
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_WRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpeq 13
iconst_1
goto 14
StackMap locals:
StackMap stack: org.apache.tomcat.util.net.SecureNioChannel
13: iconst_0
StackMap locals: org.apache.tomcat.util.net.SecureNioChannel javax.net.ssl.SSLEngineResult
StackMap stack: org.apache.tomcat.util.net.SecureNioChannel int
14: putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
15: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
8 16 1 handshake Ljavax/net/ssl/SSLEngineResult;
Exceptions:
throws java.io.IOException
public void close(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.close:()V
1: goto 7
StackMap locals:
StackMap stack: java.lang.Throwable
2: astore 2
3: iload 1
ifne 4
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 6
4: StackMap locals: java.lang.Throwable
StackMap stack:
aload 0
iconst_1
putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
5: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
invokevirtual java.nio.channels.SocketChannel.close:()V
6: StackMap locals:
StackMap stack:
aload 2
athrow
7: StackMap locals:
StackMap stack:
iload 1
ifne 8
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 10
8: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
9: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
invokevirtual java.nio.channels.SocketChannel.close:()V
10: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 11 1 force Z
Exception table:
from to target type
0 2 2 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
force
private void closeSilently();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
iconst_1
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.close:(Z)V
1: goto 4
StackMap locals:
StackMap stack: java.io.IOException
2: astore 1
start local 1 3: getstatic org.apache.tomcat.util.net.SecureNioChannel.log:Lorg/apache/juli/logging/Log;
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.closeSilentError"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
aload 1
invokeinterface org.apache.juli.logging.Log.debug:(Ljava/lang/Object;Ljava/lang/Throwable;)V
end local 1 4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
3 4 1 ioe Ljava/io/IOException;
Exception table:
from to target type
0 1 2 Class java.io.IOException
public int read(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ifne 1
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 2
1: StackMap locals:
StackMap stack:
iconst_m1
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ifne 4
3: new java.lang.IllegalStateException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.incompleteHandshake"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
istore 2
start local 2 5: iload 2
iconst_m1
if_icmpne 7
6: iconst_m1
ireturn
7: StackMap locals: int
StackMap stack:
iconst_0
istore 3
start local 3 8: StackMap locals: int
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
9: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
aload 1
invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 4
start local 4 10: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
pop
11: aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpeq 12
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 17
12: StackMap locals: javax.net.ssl.SSLEngineResult
StackMap stack:
iload 3
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.bytesProduced:()I
iadd
istore 3
13: aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 15
14: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
pop
15: StackMap locals:
StackMap stack:
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 32
16: goto 33
17: StackMap locals:
StackMap stack:
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_OVERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 31
18: iload 3
ifle 20
19: goto 33
20: StackMap locals:
StackMap stack:
aload 1
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 24
21: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
22: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
astore 1
23: goto 32
StackMap locals:
StackMap stack:
24: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
ifnull 28
aload 1
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 28
25: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.expand:(I)V
26: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
astore 1
27: goto 32
28: StackMap locals:
StackMap stack:
new java.io.IOException
dup
29: getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unwrapFailResize"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
30: invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
31: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unwrapFail"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
ifne 8
33: StackMap locals:
StackMap stack:
iload 3
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 34 1 dst Ljava/nio/ByteBuffer;
5 34 2 netread I
8 34 3 read I
10 34 4 unwrap Ljavax/net/ssl/SSLEngineResult;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
dst
public long read(java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=14, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ifne 1
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 2
1: StackMap locals:
StackMap stack:
ldc -1
lreturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ifne 4
3: new java.lang.IllegalStateException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.incompleteHandshake"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.channels.SocketChannel.read:(Ljava/nio/ByteBuffer;)I
istore 4
start local 4 5: iload 4
iconst_m1
if_icmpne 7
6: ldc -1
lreturn
7: StackMap locals: int
StackMap stack:
iconst_0
istore 5
start local 5 8: getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.NONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
astore 7
start local 7 9: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int top org.apache.tomcat.util.net.SecureNioChannel$OverflowState
StackMap stack:
aload 7
getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
if_acmpne 11
10: getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
astore 7
11: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
12: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
aload 1
iload 2
iload 3
invokevirtual javax.net.ssl.SSLEngine.unwrap:(Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;II)Ljavax/net/ssl/SSLEngineResult;
astore 6
start local 6 13: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.compact:()Ljava/nio/ByteBuffer;
pop
14: aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpeq 15
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 22
15: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState
StackMap stack:
iload 5
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.bytesProduced:()I
iadd
istore 5
16: aload 7
getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
if_acmpne 18
17: iload 5
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
isub
istore 5
18: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 20
19: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
pop
20: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_UNDERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 65
21: goto 67
22: StackMap locals:
StackMap stack:
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.BUFFER_OVERFLOW:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 64
23: iload 5
ifle 25
24: goto 67
25: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
astore 8
start local 8 26: iconst_0
istore 9
start local 9 27: iconst_1
istore 10
start local 10 28: iconst_0
istore 11
start local 11 29: goto 44
30: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState java.nio.ByteBuffer int int int
StackMap stack:
aload 1
iload 2
iload 11
iadd
aaload
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 37
31: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.expand:(I)V
32: aload 1
iload 2
iload 11
iadd
aaload
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 34
33: iconst_0
istore 10
34: StackMap locals:
StackMap stack:
aload 1
iload 2
iload 11
iadd
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.getReadBuffer:()Ljava/nio/ByteBuffer;
aastore
35: iconst_1
istore 9
36: goto 43
StackMap locals:
StackMap stack:
37: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
ifnull 43
aload 1
iload 2
iload 11
iadd
aaload
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 43
38: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
invokeinterface javax.net.ssl.SSLSession.getApplicationBufferSize:()I
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.expand:(I)V
39: aload 1
iload 2
iload 11
iadd
aaload
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
if_acmpne 41
40: iconst_0
istore 10
41: StackMap locals:
StackMap stack:
aload 1
iload 2
iload 11
iadd
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getAppReadBufHandler:()Lorg/apache/tomcat/util/net/ApplicationBufferHandler;
invokeinterface org.apache.tomcat.util.net.ApplicationBufferHandler.getByteBuffer:()Ljava/nio/ByteBuffer;
aastore
42: iconst_1
istore 9
43: StackMap locals:
StackMap stack:
iinc 11 1
StackMap locals:
StackMap stack:
44: iload 11
iload 3
if_icmplt 30
end local 11 45: iload 9
ifeq 48
46: iload 10
ifne 65
47: new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unwrapFail"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
48: StackMap locals:
StackMap stack:
aload 1
arraylength
iconst_1
iadd
anewarray java.nio.ByteBuffer
astore 11
start local 11 49: iconst_0
istore 12
start local 12 50: iconst_0
istore 13
start local 13 51: goto 58
52: StackMap locals: java.nio.ByteBuffer[] int int
StackMap stack:
iload 13
iload 2
iload 3
iadd
if_icmpne 56
53: aload 11
iload 13
aload 8
aastore
54: iconst_m1
istore 12
55: goto 57
56: StackMap locals:
StackMap stack:
aload 11
iload 13
aload 1
iload 13
iload 12
iadd
aaload
aastore
57: StackMap locals:
StackMap stack:
iinc 13 1
StackMap locals:
StackMap stack:
58: iload 13
aload 1
arraylength
iconst_1
iadd
if_icmplt 52
end local 13 59: aload 11
astore 1
60: iinc 3 1
61: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.getBufHandler:()Lorg/apache/tomcat/util/net/SocketBufferHandler;
invokevirtual org.apache.tomcat.util.net.SocketBufferHandler.configureReadBufferForWrite:()V
62: getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
astore 7
end local 12 end local 11 end local 10 end local 9 end local 8 63: goto 65
64: StackMap locals: org.apache.tomcat.util.net.SecureNioChannel java.nio.ByteBuffer[] int int int int javax.net.ssl.SSLEngineResult org.apache.tomcat.util.net.SecureNioChannel$OverflowState
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.unwrapFail"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 6
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
65: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netInBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.position:()I
ifne 66
aload 7
getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.PROCESSING:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
if_acmpne 67
66: StackMap locals:
StackMap stack:
aload 7
getstatic org.apache.tomcat.util.net.SecureNioChannel$OverflowState.DONE:Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
if_acmpne 9
67: StackMap locals:
StackMap stack:
iload 5
i2l
lreturn
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 68 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 68 1 dsts [Ljava/nio/ByteBuffer;
0 68 2 offset I
0 68 3 length I
5 68 4 netread I
8 68 5 read I
13 68 6 unwrap Ljavax/net/ssl/SSLEngineResult;
9 68 7 overflowState Lorg/apache/tomcat/util/net/SecureNioChannel$OverflowState;
26 63 8 readBuffer Ljava/nio/ByteBuffer;
27 63 9 found Z
28 63 10 resized Z
29 45 11 i I
49 63 11 dsts2 [Ljava/nio/ByteBuffer;
50 63 12 dstOffset I
51 59 13 i I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
dsts
offset
length
public int write(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.checkInterruptStatus:()V
1: aload 1
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
if_acmpne 4
2: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sc:Ljava/nio/channels/SocketChannel;
aload 1
invokevirtual java.nio.channels.SocketChannel.write:(Ljava/nio/ByteBuffer;)I
istore 2
start local 2 3: iload 2
ireturn
end local 2 4: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ifne 5
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 6
5: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.closing"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
ifne 8
7: iconst_0
ireturn
8: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
9: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 1
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual javax.net.ssl.SSLEngine.wrap:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 2
start local 2 10: aload 2
invokevirtual javax.net.ssl.SSLEngineResult.bytesConsumed:()I
istore 3
start local 3 11: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
12: aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 16
13: aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 17
14: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
pop
15: goto 17
16: StackMap locals: javax.net.ssl.SSLEngineResult int
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.wrapFail"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 2
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
18: iload 3
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 19 1 src Ljava/nio/ByteBuffer;
3 4 2 written I
10 19 2 result Ljavax/net/ssl/SSLEngineResult;
11 19 3 written I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
src
public long write(java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.checkInterruptStatus:()V
1: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ifne 2
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closed:Z
ifeq 3
2: StackMap locals:
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.closing"
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
ifne 5
4: lconst_0
lreturn
5: StackMap locals:
StackMap stack:
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.clear:()Ljava/nio/Buffer;
pop
6: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
aload 1
iload 2
iload 3
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual javax.net.ssl.SSLEngine.wrap:([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
astore 4
start local 4 7: aload 4
invokevirtual javax.net.ssl.SSLEngineResult.bytesConsumed:()I
istore 5
start local 5 8: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.flip:()Ljava/nio/Buffer;
pop
9: aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
getstatic javax.net.ssl.SSLEngineResult$Status.OK:Ljavax/net/ssl/SSLEngineResult$Status;
if_acmpne 12
10: aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getHandshakeStatus:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
if_acmpne 13
aload 0
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.tasks:()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
pop
11: goto 13
12: StackMap locals: javax.net.ssl.SSLEngineResult int
StackMap stack:
new java.io.IOException
dup
getstatic org.apache.tomcat.util.net.SecureNioChannel.sm:Lorg/apache/tomcat/util/res/StringManager;
ldc "channel.nio.ssl.wrapFail"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
invokevirtual javax.net.ssl.SSLEngineResult.getStatus:()Ljavax/net/ssl/SSLEngineResult$Status;
aastore
invokevirtual org.apache.tomcat.util.res.StringManager.getString:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
13: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
14: iload 5
i2l
lreturn
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 15 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
0 15 1 srcs [Ljava/nio/ByteBuffer;
0 15 2 offset I
0 15 3 length I
7 15 4 result Ljavax/net/ssl/SSLEngineResult;
8 15 5 written I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
srcs
offset
length
public int getOutboundRemaining();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
public boolean flushOutbound();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 1
start local 1 1: aload 0
aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual org.apache.tomcat.util.net.SecureNioChannel.flush:(Ljava/nio/ByteBuffer;)Z
pop
2: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.netOutBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 2
start local 2 3: iload 2
iload 1
if_icmpge 4
iconst_1
ireturn
StackMap locals: int int
StackMap stack:
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
1 5 1 remaining I
3 5 2 remaining2 I
Exceptions:
throws java.io.IOException
public boolean isHandshakeComplete();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.handshakeComplete:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
public boolean isClosing();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.closing:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
public javax.net.ssl.SSLEngine getSslEngine();
descriptor: ()Ljavax/net/ssl/SSLEngine;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.apache.tomcat.util.net.SecureNioChannel.sslEngine:Ljavax/net/ssl/SSLEngine;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
public java.nio.ByteBuffer getEmptyBuf();
descriptor: ()Ljava/nio/ByteBuffer;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic org.apache.tomcat.util.net.SecureNioChannel.emptyBuf:Ljava/nio/ByteBuffer;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/apache/tomcat/util/net/SecureNioChannel;
static int[] $SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic javax.net.ssl.SSLEngineResult$HandshakeStatus.values:()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
arraylength
newarray 10
astore 0
2: aload 0
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.FINISHED:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iconst_2
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_TASK:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iconst_3
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_UNWRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iconst_5
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NEED_WRAP:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iconst_4
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic javax.net.ssl.SSLEngineResult$HandshakeStatus.NOT_HANDSHAKING:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
invokevirtual javax.net.ssl.SSLEngineResult$HandshakeStatus.ordinal:()I
iconst_1
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
dup
putstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$javax$net$ssl$SSLEngineResult$HandshakeStatus:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
static int[] ();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.values:()[Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
arraylength
newarray 10
astore 0
2: aload 0
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.COMPLETE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iconst_1
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NEED_READ:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iconst_4
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NON_SECURE:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iconst_5
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.NOT_PRESENT:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iconst_2
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
getstatic org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.UNDERFLOW:Lorg/apache/tomcat/util/net/TLSClientHelloExtractor$ExtractorResult;
invokevirtual org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult.ordinal:()I
iconst_3
iastore
15: goto 17
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
16: pop
StackMap locals:
StackMap stack:
17: aload 0
dup
putstatic org.apache.tomcat.util.net.SecureNioChannel.$SWITCH_TABLE$org$apache$tomcat$util$net$TLSClientHelloExtractor$ExtractorResult:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
14 15 16 Class java.lang.NoSuchFieldError
}
SourceFile: "SecureNioChannel.java"
NestMembers:
org.apache.tomcat.util.net.SecureNioChannel$OverflowState
InnerClasses:
public final HandshakeStatus = javax.net.ssl.SSLEngineResult$HandshakeStatus of javax.net.ssl.SSLEngineResult
public final Status = javax.net.ssl.SSLEngineResult$Status of javax.net.ssl.SSLEngineResult
public NioSocketWrapper = org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper of org.apache.tomcat.util.net.NioEndpoint
public abstract ProtocolInfo = org.apache.tomcat.util.net.SSLUtil$ProtocolInfo of org.apache.tomcat.util.net.SSLUtil
private final OverflowState = org.apache.tomcat.util.net.SecureNioChannel$OverflowState of org.apache.tomcat.util.net.SecureNioChannel
public final ExtractorResult = org.apache.tomcat.util.net.TLSClientHelloExtractor$ExtractorResult of org.apache.tomcat.util.net.TLSClientHelloExtractor