final class sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
super_class: java.lang.Object
{
private final java.util.LinkedList<sun.security.ssl.DTLSOutputRecord$RecordMemo> handshakeMemos;
descriptor: Ljava/util/LinkedList;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/LinkedList<Lsun/security/ssl/DTLSOutputRecord$RecordMemo;>;
private int acquireIndex;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int messageSequence;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean flightIsReady;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int retransmits;
descriptor: I
flags: (0x0002) ACC_PRIVATE
final sun.security.ssl.DTLSOutputRecord this$0;
descriptor: Lsun/security/ssl/DTLSOutputRecord;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
private void <init>(sun.security.ssl.DTLSOutputRecord);
descriptor: (Lsun/security/ssl/DTLSOutputRecord;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=2, args_size=2
start local 0 0: aload 0
aload 1
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
2: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
3: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
4: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.messageSequence:I
5: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
6: aload 0
iconst_2
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.retransmits:I
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
MethodParameters:
Name Flags
this$0 final
void queueUpHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=6, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
ifeq 4
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.clear:()V
2: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
3: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
4: StackMap locals:
StackMap stack:
new sun.security.ssl.DTLSOutputRecord$HandshakeMemo
dup
invokespecial sun.security.ssl.DTLSOutputRecord$HandshakeMemo.<init>:()V
astore 4
start local 4 5: aload 4
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.contentType:B
6: aload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.majorVersion:B
7: aload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.minorVersion:B
8: aload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.encodeEpoch:I
9: aload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
10: aload 4
aload 1
iload 2
baload
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
11: aload 4
aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.messageSequence:I
dup_x1
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.messageSequence:I
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
12: aload 4
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
13: aload 4
iload 3
iconst_4
isub
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
14: aload 1
iload 2
iconst_4
iadd
aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
iconst_0
iload 3
iconst_4
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
15: aload 0
aload 4
aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeHashing:(Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;[B)V
16: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 4
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
17: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
getstatic sun.security.ssl.SSLHandshake.CLIENT_HELLO:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
if_icmpeq 24
18: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
getstatic sun.security.ssl.SSLHandshake.HELLO_REQUEST:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
if_icmpeq 24
19: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
20: getstatic sun.security.ssl.SSLHandshake.HELLO_VERIFY_REQUEST:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
21: if_icmpeq 24
22: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
getstatic sun.security.ssl.SSLHandshake.SERVER_HELLO_DONE:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
if_icmpeq 24
23: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
getstatic sun.security.ssl.SSLHandshake.FINISHED:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
if_icmpne 25
24: StackMap locals: sun.security.ssl.DTLSOutputRecord$HandshakeMemo
StackMap stack:
aload 0
iconst_1
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
25: StackMap locals:
StackMap stack:
return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 26 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 26 1 buf [B
0 26 2 offset I
0 26 3 length I
5 26 4 memo Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
buf
offset
length
void queueUpChangeCipherSpec();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
ifeq 4
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.clear:()V
2: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
3: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
4: StackMap locals:
StackMap stack:
new sun.security.ssl.DTLSOutputRecord$RecordMemo
dup
invokespecial sun.security.ssl.DTLSOutputRecord$RecordMemo.<init>:()V
astore 1
start local 1 5: aload 1
getstatic sun.security.ssl.ContentType.CHANGE_CIPHER_SPEC:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
6: aload 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
7: aload 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
8: aload 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeEpoch:I
9: aload 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
10: aload 1
iconst_1
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
11: aload 1
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iconst_1
bastore
12: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 1
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
13: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
5 14 1 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
void queueUpAlert(byte, byte);
descriptor: (BB)V
flags: (0x0000)
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: new sun.security.ssl.DTLSOutputRecord$RecordMemo
dup
invokespecial sun.security.ssl.DTLSOutputRecord$RecordMemo.<init>:()V
astore 3
start local 3 1: aload 3
getstatic sun.security.ssl.ContentType.ALERT:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
2: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.major:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
3: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.minor:B
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
4: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeEpoch:I
5: aload 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
6: aload 3
iconst_2
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
7: aload 3
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iload 1
bastore
8: aload 3
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_1
iload 2
bastore
9: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 3
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 11 1 level B
0 11 2 description B
1 11 3 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
sun.security.ssl.Ciphertext acquireCiphertext(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0000)
Code:
stack=8, locals=11, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isEmpty:()Z
ifeq 5
1: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isRetransmittable:()Z
ifeq 4
2: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.setRetransmission:()V
3: goto 5
4: StackMap locals:
StackMap stack:
aconst_null
areturn
5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
invokevirtual java.util.LinkedList.get:(I)Ljava/lang/Object;
checkcast sun.security.ssl.DTLSOutputRecord$RecordMemo
astore 2
start local 2 6: aconst_null
astore 3
start local 3 7: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
getstatic sun.security.ssl.ContentType.HANDSHAKE:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 9
8: aload 2
checkcast sun.security.ssl.DTLSOutputRecord$HandshakeMemo
astore 3
9: StackMap locals: sun.security.ssl.DTLSOutputRecord$RecordMemo sun.security.ssl.DTLSOutputRecord$HandshakeMemo
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
ifle 16
10: sipush 16717
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 4
start local 4 11: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
12: iload 4
bipush 25
13: invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.calculateFragmentSize:(II)I
istore 4
14: iload 4
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 4
15: goto 17
end local 4 16: StackMap locals:
StackMap stack:
sipush 16384
istore 4
start local 4 17: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.fragmentSize:I
ifle 19
18: iload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.fragmentSize:I
invokestatic java.lang.Math.min:(II)I
istore 4
19: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 5
start local 5 20: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 6
start local 6 21: iload 5
bipush 13
iadd
22: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
23: iadd
istore 7
start local 7 24: aload 1
iload 7
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
25: aload 3
ifnull 43
26: iload 4
27: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
isub
28: invokestatic java.lang.Math.min:(II)I
istore 4
29: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
30: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
bipush 16
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
31: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
bipush 8
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
32: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
33: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
bipush 8
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
34: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
35: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
bipush 16
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
36: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
bipush 8
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
37: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
38: aload 1
iload 4
bipush 16
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
39: aload 1
iload 4
bipush 8
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
40: aload 1
iload 4
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
41: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
iload 4
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
42: goto 45
43: StackMap locals: int int int
StackMap stack:
iload 4
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
arraylength
invokestatic java.lang.Math.min:(II)I
istore 4
44: aload 1
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iload 4
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
45: StackMap locals:
StackMap stack:
aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
46: aload 1
iload 7
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
47: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 53
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 53
48: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc " "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
49: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
invokestatic sun.security.ssl.ContentType.nameOf:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
50: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
51: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
52: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
53: StackMap locals:
StackMap stack:
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
54: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
aload 1
55: iload 5
iload 6
bipush 13
56: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
57: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
58: invokestatic sun.security.ssl.ProtocolVersion.valueOf:(BB)Lsun/security/ssl/ProtocolVersion;
59: invokestatic sun.security.ssl.DTLSOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;)J
lstore 8
start local 8 60: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 66
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 66
61: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 10
start local 10 62: aload 10
aload 10
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
63: aload 10
iload 5
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
64: new java.lang.StringBuilder
dup
ldc "Raw write ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 10
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 10
aastore
65: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 10 66: StackMap locals: long
StackMap stack:
aload 1
iload 6
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
67: aload 3
ifnull 74
68: aload 3
dup
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
iload 4
iadd
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
69: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
if_icmpne 71
70: aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
71: StackMap locals:
StackMap stack:
new sun.security.ssl.Ciphertext
dup
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.contentType:B
72: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
lload 8
73: invokespecial sun.security.ssl.Ciphertext.<init>:(BBJ)V
areturn
74: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.isCloseWaiting:Z
ifeq 77
75: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
getstatic sun.security.ssl.ContentType.ALERT:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 77
76: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
invokevirtual sun.security.ssl.DTLSOutputRecord.close:()V
77: StackMap locals:
StackMap stack:
aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
78: new sun.security.ssl.Ciphertext
dup
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
79: getstatic sun.security.ssl.SSLHandshake.NOT_APPLICABLE:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
lload 8
80: invokespecial sun.security.ssl.Ciphertext.<init>:(BBJ)V
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 81 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 81 1 dstBuf Ljava/nio/ByteBuffer;
6 81 2 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
7 81 3 hsMemo Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
11 16 4 fragLen I
17 81 4 fragLen I
20 81 5 dstPos I
21 81 6 dstLim I
24 81 7 dstContent I
60 81 8 recordSN J
62 66 10 temporary Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
dstBuf
private void handshakeHashing(sun.security.ssl.DTLSOutputRecord$HandshakeMemo, byte[]);
descriptor: (Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
istore 3
start local 3 1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
iload 3
invokevirtual sun.security.ssl.HandshakeHash.isHashable:(B)Z
ifne 3
2: return
3: StackMap locals: int
StackMap stack:
bipush 12
newarray 8
astore 4
start local 4 4: aload 4
iconst_0
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
bastore
5: aload 4
iconst_1
aload 2
arraylength
bipush 16
ishr
sipush 255
iand
i2b
bastore
6: aload 4
iconst_2
aload 2
arraylength
bipush 8
ishr
sipush 255
iand
i2b
bastore
7: aload 4
iconst_3
aload 2
arraylength
sipush 255
iand
i2b
bastore
8: aload 4
iconst_4
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
bipush 8
ishr
sipush 255
iand
i2b
bastore
9: aload 4
iconst_5
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
sipush 255
iand
i2b
bastore
10: aload 4
bipush 6
iconst_0
bastore
11: aload 4
bipush 7
iconst_0
bastore
12: aload 4
bipush 8
iconst_0
bastore
13: aload 4
bipush 9
aload 4
iconst_1
baload
bastore
14: aload 4
bipush 10
aload 4
iconst_2
baload
bastore
15: aload 4
bipush 11
aload 4
iconst_3
baload
bastore
16: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 4
iconst_0
bipush 12
invokevirtual sun.security.ssl.HandshakeHash.deliver:([BII)V
17: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.handshakeHash:Lsun/security/ssl/HandshakeHash;
aload 2
iconst_0
aload 2
arraylength
invokevirtual sun.security.ssl.HandshakeHash.deliver:([BII)V
18: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 19 1 hsFrag Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
0 19 2 hsBody [B
1 19 3 hsType B
4 19 4 temporary [B
MethodParameters:
Name Flags
hsFrag
hsBody
boolean isEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
ifeq 2
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifne 2
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.size:()I
if_icmplt 3
2: StackMap locals:
StackMap stack:
iconst_1
ireturn
3: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
boolean hasAlert();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 2
goto 4
StackMap locals: sun.security.ssl.DTLSOutputRecord$DTLSFragmenter top java.util.Iterator
StackMap stack:
1: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.DTLSOutputRecord$RecordMemo
astore 1
start local 1 2: aload 1
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
getstatic sun.security.ssl.ContentType.ALERT:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
if_icmpne 4
3: iconst_1
ireturn
end local 1 4: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
5: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
2 4 1 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
boolean isRetransmittable();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
ifeq 3
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.isEmpty:()Z
ifne 3
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.size:()I
2: if_icmplt 3
iconst_1
ireturn
StackMap locals:
StackMap stack:
3: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
private void setRetransmission();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
invokevirtual java.util.LinkedList.iterator:()Ljava/util/Iterator;
astore 2
goto 6
StackMap locals: sun.security.ssl.DTLSOutputRecord$DTLSFragmenter top java.util.Iterator
StackMap stack:
2: aload 2
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.DTLSOutputRecord$RecordMemo
astore 1
start local 1 3: aload 1
instanceof sun.security.ssl.DTLSOutputRecord$HandshakeMemo
ifeq 6
4: aload 1
checkcast sun.security.ssl.DTLSOutputRecord$HandshakeMemo
astore 3
start local 3 5: aload 3
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
end local 3 end local 1 6: StackMap locals:
StackMap stack:
aload 2
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
7: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
sipush 16717
if_icmpgt 11
8: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
sipush 256
if_icmple 11
aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.retransmits:I
dup_x1
iconst_1
isub
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.retransmits:I
ifgt 11
9: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.shrinkPacketSize:()V
10: aload 0
iconst_2
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.retransmits:I
11: StackMap locals: sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
3 6 1 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
5 6 3 hmemo Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
private void shrinkPacketSize();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
sipush 256
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
iconst_2
idiv
invokestatic java.lang.Math.max:(II)I
putfield sun.security.ssl.DTLSOutputRecord.packetSize:I
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
}
SourceFile: "DTLSOutputRecord.java"
NestHost: sun.security.ssl.DTLSOutputRecord
InnerClasses:
private final DTLSFragmenter = sun.security.ssl.DTLSOutputRecord$DTLSFragmenter of sun.security.ssl.DTLSOutputRecord
private HandshakeMemo = sun.security.ssl.DTLSOutputRecord$HandshakeMemo of sun.security.ssl.DTLSOutputRecord
private RecordMemo = sun.security.ssl.DTLSOutputRecord$RecordMemo of sun.security.ssl.DTLSOutputRecord
abstract SSLWriteCipher = sun.security.ssl.SSLCipher$SSLWriteCipher of sun.security.ssl.SSLCipher