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
synchronized void encodeAlert(byte, byte);
descriptor: (BB)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=9, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 6
1: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 5
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 5
2: new java.lang.StringBuilder
dup
ldc "outbound has closed, ignore outbound alert message: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
3: iload 2
invokestatic sun.security.ssl.Alert.nameOf:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
4: 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
5: StackMap locals:
StackMap stack:
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 3
start local 3 7: aload 0
iload 3
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
8: aload 0
iload 1
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
9: aload 0
iload 2
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
10: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 16
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 16
11: 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;
12: 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;
13: 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;
14: 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;
15: 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
16: 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
17: 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
18: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
19: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 23
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 23
20: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
21: 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
22: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
23: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
24: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 25 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 25 1 level B
0 25 2 description B
7 25 3 position I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
synchronized void encodeHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=9, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 6
1: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 5
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 5
2: ldc "outbound has closed, ignore outbound handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
3: aload 1
iload 2
iload 3
invokestatic java.nio.ByteBuffer.wrap:([BII)Ljava/nio/ByteBuffer;
aastore
4: invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
5: StackMap locals:
StackMap stack:
return
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.firstMessage:Z
ifeq 28
7: aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.firstMessage:Z
8: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.helloVersion:Lsun/security/ssl/ProtocolVersion;
getstatic sun.security.ssl.ProtocolVersion.SSL20Hello:Lsun/security/ssl/ProtocolVersion;
if_acmpne 28
9: 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 28
10: aload 1
iload 2
iconst_4
iadd
iconst_2
iadd
bipush 32
iadd
baload
ifne 28
11: aload 1
iload 2
iconst_4
iadd
iload 3
iconst_4
isub
12: invokestatic sun.security.ssl.SSLSocketOutputRecord.encodeV2ClientHello:([BII)Ljava/nio/ByteBuffer;
astore 4
start local 4 13: aload 4
invokevirtual java.nio.ByteBuffer.array:()[B
astore 5
start local 5 14: aload 4
invokevirtual java.nio.ByteBuffer.limit:()I
istore 6
start local 6 15: 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
16: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 21
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 21
17: new java.lang.StringBuilder
dup
ldc "WRITE: SSLv2 ClientHello message, length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
18: iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
19: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
20: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
21: 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
22: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
23: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 27
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 27
24: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
25: new java.io.ByteArrayInputStream
dup
aload 5
iconst_0
iload 6
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
aastore
26: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
27: StackMap locals:
StackMap stack:
return
end local 6 end local 5 end local 4 28: StackMap locals:
StackMap stack:
aload 1
iconst_0
baload
istore 4
start local 4 29: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
iload 4
invokevirtual sun.security.ssl.HandshakeHash.isHashable:(B)Z
ifeq 31
30: 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
31: StackMap locals: int
StackMap stack:
aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.getFragLimit:()I
istore 5
start local 5 32: 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 33: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
ifne 35
34: aload 0
iload 6
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
35: 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 38
36: aload 0
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
37: return
38: StackMap locals:
StackMap stack:
iload 2
iload 3
iadd
istore 7
start local 7 39: goto 60
40: 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 41: iload 5
iload 8
invokestatic java.lang.Math.min:(II)I
istore 9
start local 9 42: aload 0
aload 1
iload 2
iload 9
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
43: iload 8
iload 5
if_icmpge 45
44: return
45: StackMap locals: int int
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 51
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 51
46: 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;
47: 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;
48: 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;
49: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
50: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
51: 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
52: 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
53: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
54: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 58
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 58
55: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
56: 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
57: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
58: StackMap locals:
StackMap stack:
iload 2
iload 9
iadd
istore 2
59: aload 0
iload 6
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
end local 9 end local 8 60: StackMap locals:
StackMap stack:
iload 2
iload 7
if_icmplt 40
end local 7 61: return
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 62 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 62 1 source [B
0 62 2 offset I
0 62 3 length I
13 28 4 v2ClientHello Ljava/nio/ByteBuffer;
14 28 5 record [B
15 28 6 limit I
29 62 4 handshakeType B
32 62 5 fragLimit I
33 62 6 position I
39 61 7 limit I
41 60 8 remains I
42 60 9 fragLen I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
synchronized void encodeChangeCipherSpec();
descriptor: ()V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=9, locals=2, args_size=1
start local 0 0: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 4
1: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 3
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 3
2: 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
3: StackMap locals:
StackMap stack:
return
4: 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 5: aload 0
iload 1
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
6: aload 0
iconst_1
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:(I)V
7: 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
8: 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
9: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 13
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 13
10: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
11: 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
12: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
13: StackMap locals: int
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
14: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/ssl/SSLSocketOutputRecord;
5 15 1 position I
Exceptions:
throws java.io.IOException
public synchronized void flush();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=9, locals=2, args_size=1
start local 0 0: 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 1: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.count:I
iload 1
if_icmpgt 3
2: return
3: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 9
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 9
4: 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;
5: 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;
6: 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;
7: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
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:
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
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: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
12: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 16
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 16
13: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
14: 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
15: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
16: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
17: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/ssl/SSLSocketOutputRecord;
1 18 1 position I
Exceptions:
throws java.io.IOException
synchronized void deliver(byte[], int, int);
descriptor: ([BII)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=9, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.isClosed:()Z
ifeq 2
1: new java.net.SocketException
dup
ldc "Connection or outbound has been closed"
invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
athrow
2: 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 7
3: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 6
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 6
4: ldc "sequence number extremely close to overflow (2^64-1 packets). Closing connection."
iconst_0
anewarray java.lang.Object
5: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
6: 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
7: StackMap locals:
StackMap stack:
iconst_1
istore 4
start local 4 8: iload 2
iload 3
iadd
istore 5
start local 5 9: goto 43
10: StackMap locals: int int
StackMap stack:
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
ifle 16
11: sipush 16709
aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 6
start local 6 12: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
iload 6
iconst_5
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.calculateFragmentSize:(II)I
13: istore 6
14: iload 6
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 6
15: goto 17
end local 6 16: StackMap locals:
StackMap stack:
sipush 16384
istore 6
start local 6 17: StackMap locals: int
StackMap stack:
aload 0
iload 6
invokevirtual sun.security.ssl.SSLSocketOutputRecord.calculateFragmentSize:(I)I
istore 6
18: iload 4
ifeq 22
aload 0
invokevirtual sun.security.ssl.SSLSocketOutputRecord.needToSplitPayload:()Z
ifeq 22
19: iconst_1
istore 6
20: iconst_0
istore 4
21: goto 23
22: StackMap locals:
StackMap stack:
iload 6
iload 5
iload 2
isub
invokestatic java.lang.Math.min:(II)I
istore 6
23: 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 24: aload 0
iload 7
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
25: aload 0
aload 1
iload 2
iload 6
invokevirtual sun.security.ssl.SSLSocketOutputRecord.write:([BII)V
26: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 32
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 32
27: 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;
28: 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;
29: 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;
30: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
31: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
32: 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.APPLICATION_DATA: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
33: 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
34: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.flush:()V
35: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 39
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 39
36: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
37: 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
38: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
39: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.count:I
40: aload 0
getfield sun.security.ssl.SSLSocketOutputRecord.isFirstAppOutputRecord:Z
ifeq 42
41: aload 0
iconst_0
putfield sun.security.ssl.SSLSocketOutputRecord.isFirstAppOutputRecord:Z
42: StackMap locals:
StackMap stack:
iload 2
iload 6
iadd
istore 2
end local 7 end local 6 43: StackMap locals:
StackMap stack:
iload 2
iload 5
if_icmplt 10
end local 5 44: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 45 0 this Lsun/security/ssl/SSLSocketOutputRecord;
0 45 1 source [B
0 45 2 offset I
0 45 3 length I
8 45 4 isFirstRecordOfThePayload Z
9 44 5 limit I
12 16 6 fragLen I
17 43 6 fragLen I
24 43 7 position I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
synchronized void setDeliverStream(java.io.OutputStream);
descriptor: (Ljava/io/OutputStream;)V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.security.ssl.SSLSocketOutputRecord.deliverStream:Ljava/io/OutputStream;
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 outputStream Ljava/io/OutputStream;
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