final class sun.security.ssl.SSLSocketOutputRecord extends sun.security.ssl.OutputRecord implements sun.security.ssl.SSLRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.SSLSocketOutputRecord
super_class: sun.security.ssl.OutputRecord
{
private java.io.OutputStream deliverStream;
descriptor: Ljava/io/OutputStream;
flags: (0x0002) ACC_PRIVATE
void <init>(sun.security.ssl.HandshakeHash);
descriptor: (Lsun/security/ssl/HandshakeHash;)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
aconst_null
invokespecial sun.security.ssl.SSLSocketOutputRecord.<init>:(Lsun/security/ssl/HandshakeHash;Lsun/security/ssl/TransportContext;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 2 1 handshakeHash Lsun/security/ssl/HandshakeHash;
MethodParameters:
Name Flags
handshakeHash
void <init>(sun.security.ssl.HandshakeHash, sun.security.ssl.TransportContext);
descriptor: (Lsun/security/ssl/HandshakeHash;Lsun/security/ssl/TransportContext;)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokestatic sun.security.ssl.SSLCipher$SSLWriteCipher.nullTlsWriteCipher:()Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokespecial sun.security.ssl.OutputRecord.<init>:(Lsun/security/ssl/HandshakeHash;Lsun/security/ssl/SSLCipher$SSLWriteCipher;)V
1: aload 0
aconst_null
putfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
2: aload 0
aload 2
putfield sun.security.ssl.SSLSocketOutputRecord.tc:Lsun/security/ssl/TransportContext;
3: aload 0
sipush 16709
putfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
4: aload 0
getstatic sun.security.ssl.ProtocolVersion.NONE:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 6 1 handshakeHash Lsun/security/ssl/HandshakeHash;
0 6 2 tc Lsun/security/ssl/TransportContext;
MethodParameters:
Name Flags
handshakeHash
tc
void encodeAlert(byte, byte);
descriptor: (BB)V
flags: (0x0000)
Code:
stack=9, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 8
2: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 6
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 6
3: new java.lang.StringBuilder
dup
ldc "outbound has closed, ignore outbound alert message: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: iload 2
invokestatic sun.security.ssl.Alert.nameOf:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
7: return
8: StackMap locals:
StackMap stack:
iconst_5
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
iadd
istore 3
start local 3 9: aload 0
iload 3
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
10: aload 0
iload 1
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
11: aload 0
iload 2
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
12: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 18
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 18
13: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
14: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic sun.security.ssl.ContentType.ALERT:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc "("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokestatic sun.security.ssl.Alert.nameOf:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iconst_5
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
17: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
18: StackMap locals: int
StackMap stack:
aload 0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getstatic sun.security.ssl.ContentType.ALERT:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
iconst_5
invokevirtual sun.security.ssl.SSLSocketOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BI)J
pop2
19: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokevirtual java.io.OutputStream.write:([BII)V
20: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
21: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 25
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 25
22: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
23: new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
24: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
25: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
end local 3 26: goto 30
StackMap locals: sun.security.ssl.SSLSocketOutputRecord int int
StackMap stack: java.lang.Throwable
27: astore 4
28: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
29: aload 4
athrow
30: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
31: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 32 1 level B
0 32 2 description B
9 26 3 position I
Exception table:
from to target type
1 6 27 any
8 27 27 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
void encodeHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=9, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 8
2: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 6
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 6
3: ldc "outbound has closed, ignore outbound handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
4: aload 1
iload 2
iload 3
invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
aastore
5: invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
7: return
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.firstMessage:Z
ifeq 31
9: aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.firstMessage:Z
10: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
getstatic sun.security.ssl.ProtocolVersion.SSL20Hello:Lsun/security/ssl/ProtocolVersion;
if_acmpne 31
11: aload 1
iload 2
baload
getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
if_icmpne 31
12: aload 1
iload 2
iconst_4
iadd
iconst_2
iadd
bipush 32
iadd
baload
ifne 31
13: aload 1
iload 2
iconst_4
iadd
iload 3
iconst_4
isub
14: invokestatic sun.security.ssl.SSLSocketOutputRecord.encodeV2ClientHello:([BII)Ljava/nio/ByteBuffer;
astore 4
start local 4 15: aload 4
invokevirtual java.nio.ByteBuffer.array:()[B
astore 5
start local 5 16: aload 4
invokevirtual java.nio.ByteBuffer.limit:()I
istore 6
start local 6 17: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 5
iconst_2
iload 6
iconst_2
isub
invokevirtual sun.security.ssl.HandshakeHash.deliver:([BII)V
18: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 23
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 23
19: new java.lang.StringBuilder
dup
ldc "WRITE: SSLv2 ClientHello message, length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
20: iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
21: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
22: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
23: StackMap locals: java.nio.ByteBuffer byte[] int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 5
iconst_0
iload 6
invokevirtual java.io.OutputStream.write:([BII)V
24: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
25: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 29
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 29
26: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
27: new java.io.ByteArrayInputStream
dup
aload 5
iconst_0
iload 6
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
28: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
29: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
30: return
end local 6 end local 5 end local 4 31: StackMap locals:
StackMap stack:
aload 1
iconst_0
baload
istore 4
start local 4 32: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
iload 4
invokevirtual sun.security.ssl.HandshakeHash.isHashable:(B)Z
ifeq 34
33: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.HandshakeHash.deliver:([BII)V
34: StackMap locals: int
StackMap stack:
aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.getFragLimit:()I
istore 5
start local 5 35: iconst_5
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
iadd
istore 6
start local 6 36: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
ifne 38
37: aload 0
iload 6
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
38: StackMap locals: int int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iload 6
isub
iload 5
iload 3
isub
if_icmpge 42
39: aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
40: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
41: return
42: StackMap locals:
StackMap stack:
iload 2
iload 3
iadd
istore 7
start local 7 43: goto 65
44: StackMap locals: int
StackMap stack:
iload 7
iload 2
isub
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iload 6
isub
iadd
istore 8
start local 8 45: iload 5
iload 8
invokestatic java.lang.Math.min:(II)I
istore 9
start local 9 46: aload 0
aload 1
iload 2
iload 9
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
47: iload 8
iload 5
if_icmpge 50
48: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
49: return
50: StackMap locals: int int
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 56
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 56
51: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
52: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
53: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iconst_5
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
54: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
55: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
56: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
iconst_5
invokevirtual sun.security.ssl.SSLSocketOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BI)J
pop2
57: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokevirtual java.io.OutputStream.write:([BII)V
58: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
59: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 63
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 63
60: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
61: new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
62: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
63: StackMap locals:
StackMap stack:
iload 2
iload 9
iadd
istore 2
64: aload 0
iload 6
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
end local 9 end local 8 65: StackMap locals:
StackMap stack:
iload 2
iload 7
if_icmplt 44
end local 7 end local 6 end local 5 end local 4 66: goto 70
StackMap locals: sun.security.ssl.SSLSocketOutputRecord byte[] int int
StackMap stack: java.lang.Throwable
67: astore 10
68: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
69: aload 10
athrow
70: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
71: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 72 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 72 1 source [B
0 72 2 offset I
0 72 3 length I
15 31 4 v2ClientHello Ljava/nio/ByteBuffer;
16 31 5 record [B
17 31 6 limit I
32 66 4 handshakeType B
35 66 5 fragLimit I
36 66 6 position I
43 66 7 limit I
45 65 8 remains I
46 65 9 fragLen I
Exception table:
from to target type
1 6 67 any
8 29 67 any
31 40 67 any
42 48 67 any
50 67 67 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
void encodeChangeCipherSpec();
descriptor: ()V
flags: (0x0000)
Code:
stack=9, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 6
2: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 4
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 4
3: ldc "outbound has closed, ignore outbound change_cipher_spec message"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
5: return
6: StackMap locals:
StackMap stack:
iconst_5
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
iadd
istore 1
start local 1 7: aload 0
iload 1
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
8: aload 0
iconst_1
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
9: aload 0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
iconst_5
invokevirtual sun.security.ssl.SSLSocketOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BI)J
pop2
10: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokevirtual java.io.OutputStream.write:([BII)V
11: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 15
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 15
12: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
13: new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
14: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
15: StackMap locals: int
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
end local 1 16: goto 20
StackMap locals: sun.security.ssl.SSLSocketOutputRecord
StackMap stack: java.lang.Throwable
17: astore 2
18: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
19: aload 2
athrow
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
21: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/security/ssl/SSLSocketOutputRecord;
7 16 1 position I
Exception table:
from to target type
1 4 17 any
6 17 17 any
Exceptions:
throws java.io.IOException
public void flush();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=9, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: iconst_5
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
iadd
istore 1
start local 1 2: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iload 1
if_icmpgt 5
3: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
4: return
5: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 11
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 11
6: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
7: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
8: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iconst_5
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
10: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
11: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
iconst_5
invokevirtual sun.security.ssl.SSLSocketOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BI)J
pop2
12: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokevirtual java.io.OutputStream.write:([BII)V
13: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
14: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 18
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 18
15: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
16: new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
17: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
18: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
end local 1 19: goto 23
StackMap locals: sun.security.ssl.SSLSocketOutputRecord
StackMap stack: java.lang.Throwable
20: astore 2
21: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
22: aload 2
athrow
23: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
24: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lsun/security/ssl/SSLSocketOutputRecord;
2 19 1 position I
Exception table:
from to target type
1 3 20 any
5 20 20 any
Exceptions:
throws java.io.IOException
void deliver(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=9, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 5
2: new java.net.SocketException
dup
3: ldc "Connection or outbound has been closed"
4: invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getfield sun.security.ssl.SSLCipher$SSLWriteCipher.authenticator:Lsun/security/ssl/Authenticator;
invokevirtual sun.security.ssl.Authenticator.seqNumOverflow:()Z
ifeq 10
6: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 9
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 9
7: ldc "sequence number extremely close to overflow (2^64-1 packets). Closing connection."
iconst_0
anewarray java.lang.Object
8: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
9: StackMap locals:
StackMap stack:
new javax.net.ssl.SSLHandshakeException
dup
ldc "sequence number overflow"
invokespecial javax.net.ssl.SSLHandshakeException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
iconst_1
istore 4
start local 4 11: iload 2
iload 3
iadd
istore 5
start local 5 12: goto 49
13: StackMap locals: int int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
ifle 20
14: sipush 16709
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 6
start local 6 15: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
16: iload 6
iconst_5
17: invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.calculateFragmentSize:(II)I
istore 6
18: iload 6
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 6
19: goto 21
end local 6 20: StackMap locals:
StackMap stack:
sipush 16384
istore 6
start local 6 21: StackMap locals: int
StackMap stack:
aload 0
iload 6
invokevirtual sun.security.ssl.SSLSocketOutputRecord.calculateFragmentSize:(I)I
istore 6
22: iload 4
ifeq 26
aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.needToSplitPayload:()Z
ifeq 26
23: iconst_1
istore 6
24: iconst_0
istore 4
25: goto 27
26: StackMap locals:
StackMap stack:
iload 6
iload 5
iload 2
isub
invokestatic java.lang.Math.min:(II)I
istore 6
27: StackMap locals:
StackMap stack:
iconst_5
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
iadd
istore 7
start local 7 28: aload 0
iload 7
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
29: aload 0
aload 1
iload 2
iload 6
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
30: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 36
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 36
31: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
32: ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
getstatic sun.security.ssl.ContentType.APPLICATION_DATA:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iload 7
isub
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
34: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
35: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
36: StackMap locals: int
StackMap stack:
aload 0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
37: getstatic sun.security.ssl.ContentType.APPLICATION_DATA:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
iconst_5
38: invokevirtual sun.security.ssl.SSLSocketOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BI)J
pop2
39: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokevirtual java.io.OutputStream.write:([BII)V
40: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
41: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 45
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 45
42: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
43: new java.io.ByteArrayInputStream
dup
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.buf:[B
iconst_0
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
44: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
45: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
46: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.isFirstAppOutputRecord:Z
ifeq 48
47: aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.isFirstAppOutputRecord:Z
48: StackMap locals:
StackMap stack:
iload 2
iload 6
iadd
istore 2
end local 7 end local 6 49: StackMap locals:
StackMap stack:
iload 2
iload 5
if_icmplt 13
end local 5 end local 4 50: goto 54
StackMap locals: sun.security.ssl.SSLSocketOutputRecord byte[] int int
StackMap stack: java.lang.Throwable
51: astore 8
52: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
53: aload 8
athrow
54: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
55: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 56 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 56 1 source [B
0 56 2 offset I
0 56 3 length I
11 50 4 isFirstRecordOfThePayload Z
12 50 5 limit I
15 20 6 fragLen I
21 49 6 fragLen I
28 49 7 position I
Exception table:
from to target type
1 51 51 any
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
void setDeliverStream(java.io.OutputStream);
descriptor: (Ljava/io/OutputStream;)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
aload 1
putfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
2: goto 6
StackMap locals:
StackMap stack: java.lang.Throwable
3: astore 2
4: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
5: aload 2
athrow
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
7: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 8 1 outputStream Ljava/io/OutputStream;
Exception table:
from to target type
1 3 3 any
MethodParameters:
Name Flags
outputStream
private boolean needToSplitPayload();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifne 4
1: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.isCBCMode:()Z
ifeq 4
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.isFirstAppOutputRecord:Z
ifne 4
2: getstatic sun.security.ssl.Record.enableCBCProtection:Z
ifeq 4
3: iconst_1
ireturn
StackMap locals:
StackMap stack:
4: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/SSLSocketOutputRecord;
private int getFragLimit();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
ifle 6
1: sipush 16709
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 1
start local 1 2: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
iload 1
iconst_5
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.calculateFragmentSize:(II)I
3: istore 1
4: iload 1
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 1
5: goto 7
end local 1 6: StackMap locals:
StackMap stack:
sipush 16384
istore 1
start local 1 7: StackMap locals: int
StackMap stack:
aload 0
iload 1
invokevirtual sun.security.ssl.SSLSocketOutputRecord.calculateFragmentSize:(I)I
istore 1
8: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/ssl/SSLSocketOutputRecord;
2 6 1 fragLimit I
7 9 1 fragLimit I
}
SourceFile: "SSLSocketOutputRecord.java"
InnerClasses:
abstract SSLWriteCipher = sun.security.ssl.SSLCipher$SSLWriteCipher of sun.security.ssl.SSLCipher