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 java.util.LinkedList<sun.security.ssl.DTLSOutputRecord$RecordMemo> handshakeMemos;
descriptor: Ljava/util/LinkedList;
flags: (0x0002) ACC_PRIVATE
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
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
2: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
3: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.messageSequence:I
4: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
5: aload 0
iconst_2
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.retransmits:I
6: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
MethodParameters:
Name Flags
this$0 final
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
bipush 20
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/CipherBox;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
10: aload 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
11: aload 1
iconst_1
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
12: aload 1
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iconst_1
bastore
13: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 1
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
14: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
5 15 1 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
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
bipush 22
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/CipherBox;
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.encodeCipher:Lsun/security/ssl/CipherBox;
10: aload 4
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.writeAuthenticator:Lsun/security/ssl/Authenticator;
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
11: aload 4
aload 1
iload 2
baload
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
12: 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
13: aload 4
iconst_0
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
14: aload 4
iload 3
iconst_4
isub
newarray 8
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
15: 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
16: 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
17: aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.handshakeMemos:Ljava/util/LinkedList;
aload 4
invokevirtual java.util.LinkedList.add:(Ljava/lang/Object;)Z
pop
18: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
iconst_1
if_icmpeq 25
19: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
ifeq 25
20: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
21: iconst_3
22: if_icmpeq 25
23: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
bipush 14
if_icmpeq 25
24: aload 4
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
bipush 20
if_icmpne 26
25: StackMap locals: sun.security.ssl.DTLSOutputRecord$HandshakeMemo
StackMap stack:
aload 0
iconst_1
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.flightIsReady:Z
26: 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 27 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 27 1 buf [B
0 27 2 offset I
0 27 3 length I
5 27 4 memo Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
buf
offset
length
sun.security.ssl.Ciphertext acquireCiphertext(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0000)
Code:
stack=9, locals=12, 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
bipush 22
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:
iconst_0
istore 4
start local 4 10: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
instanceof sun.security.ssl.MAC
ifeq 12
11: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
istore 4
12: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.this$0:Lsun/security/ssl/DTLSOutputRecord;
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
ifle 19
13: 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 5
start local 5 14: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
15: iload 5
iload 4
bipush 25
16: invokevirtual sun.security.ssl.CipherBox.calculateFragmentSize:(III)I
istore 5
17: iload 5
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 5
18: goto 20
end local 5 19: StackMap locals:
StackMap stack:
sipush 16384
istore 5
start local 5 20: 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 22
21: iload 5
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 5
22: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 6
start local 6 23: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 7
start local 7 24: iload 6
bipush 13
iadd
25: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
invokevirtual sun.security.ssl.CipherBox.getExplicitNonceSize:()I
26: iadd
istore 8
start local 8 27: aload 1
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
28: aload 3
ifnull 46
29: iload 5
30: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
isub
31: invokestatic java.lang.Math.min:(II)I
istore 5
32: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
33: 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
34: 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
35: 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
36: 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
37: 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
38: 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
39: 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
40: 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
41: aload 1
iload 5
bipush 16
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
42: aload 1
iload 5
bipush 8
ishr
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
43: aload 1
iload 5
sipush 255
iand
i2b
invokevirtual java.nio.ByteBuffer.put:(B)Ljava/nio/ByteBuffer;
pop
44: aload 1
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
iload 5
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
45: goto 48
46: StackMap locals: int int int
StackMap stack:
iload 5
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
arraylength
invokestatic java.lang.Math.min:(II)I
istore 5
47: aload 1
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.fragment:[B
iconst_0
iload 5
invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
pop
48: StackMap locals:
StackMap stack:
aload 1
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
49: aload 1
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
50: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 56
ldc "record"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 56
51: getstatic java.lang.System.out:Ljava/io/PrintStream;
new java.lang.StringBuilder
dup
invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
52: ldc ", WRITE: "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
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;
53: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
invokestatic sun.security.ssl.Record.contentName:(B)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
54: 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;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
55: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
56: StackMap locals:
StackMap stack:
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeAuthenticator:Lsun/security/ssl/Authenticator;
aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.encodeCipher:Lsun/security/ssl/CipherBox;
57: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.contentType:B
aload 1
58: iload 6
iload 7
bipush 13
59: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.majorVersion:B
60: aload 2
getfield sun.security.ssl.DTLSOutputRecord$RecordMemo.minorVersion:B
61: invokestatic sun.security.ssl.ProtocolVersion.valueOf:(II)Lsun/security/ssl/ProtocolVersion;
62: iconst_1
63: invokestatic sun.security.ssl.DTLSOutputRecord.encrypt:(Lsun/security/ssl/Authenticator;Lsun/security/ssl/CipherBox;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;Z)J
lstore 9
start local 9 64: getstatic sun.security.ssl.DTLSOutputRecord.debug:Lsun/security/ssl/Debug;
ifnull 71
ldc "packet"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 71
65: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 11
start local 11 66: aload 11
aload 11
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
67: aload 11
iload 6
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
68: new java.lang.StringBuilder
dup
ldc "[Raw write]: length = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 11
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
69: aload 11
70: invokestatic sun.security.ssl.Debug.printHex:(Ljava/lang/String;Ljava/nio/ByteBuffer;)V
end local 11 71: StackMap locals: long
StackMap stack:
aload 1
iload 7
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
72: aload 3
ifnull 81
73: aload 3
dup
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
iload 5
iadd
putfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
74: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.acquireOffset:I
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.fragment:[B
arraylength
if_icmpne 76
75: aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireIndex:I
76: StackMap locals:
StackMap stack:
new sun.security.ssl.Ciphertext
dup
77: aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.contentType:B
aload 3
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
78: invokestatic sun.security.ssl.Ciphertext$RecordType.valueOf:(BB)Lsun/security/ssl/Ciphertext$RecordType;
79: lload 9
80: invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
81: 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
82: new sun.security.ssl.Ciphertext
dup
83: getstatic sun.security.ssl.Ciphertext$RecordType.RECORD_CHANGE_CIPHER_SPEC:Lsun/security/ssl/Ciphertext$RecordType;
lload 9
84: invokespecial sun.security.ssl.Ciphertext.<init>:(Lsun/security/ssl/Ciphertext$RecordType;J)V
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 85 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 85 1 dstBuf Ljava/nio/ByteBuffer;
6 85 2 memo Lsun/security/ssl/DTLSOutputRecord$RecordMemo;
7 85 3 hsMemo Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
10 85 4 macLen I
14 19 5 fragLen I
20 85 5 fragLen I
23 85 6 dstPos I
24 85 7 dstLim I
27 85 8 dstContent I
64 85 9 recordSN J
66 71 11 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: iload 3
ifeq 3
2: iload 3
iconst_3
if_icmpne 4
3: StackMap locals: int
StackMap stack:
return
4: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
ifne 9
5: iload 3
iconst_1
if_icmpne 9
6: aload 2
bipush 34
baload
istore 4
start local 4 7: iload 4
ifne 9
8: return
end local 4 9: StackMap locals:
StackMap stack:
bipush 12
newarray 8
astore 4
start local 4 10: aload 4
iconst_0
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.handshakeType:B
bastore
11: aload 4
iconst_1
aload 2
arraylength
bipush 16
ishr
sipush 255
iand
i2b
bastore
12: aload 4
iconst_2
aload 2
arraylength
bipush 8
ishr
sipush 255
iand
i2b
bastore
13: aload 4
iconst_3
aload 2
arraylength
sipush 255
iand
i2b
bastore
14: aload 4
iconst_4
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
bipush 8
ishr
sipush 255
iand
i2b
bastore
15: aload 4
iconst_5
aload 1
getfield sun.security.ssl.DTLSOutputRecord$HandshakeMemo.messageSequence:I
sipush 255
iand
i2b
bastore
16: aload 4
bipush 6
iconst_0
bastore
17: aload 4
bipush 7
iconst_0
bastore
18: aload 4
bipush 8
iconst_0
bastore
19: aload 4
bipush 9
aload 4
iconst_1
baload
bastore
20: aload 4
bipush 10
aload 4
iconst_2
baload
bastore
21: aload 4
bipush 11
aload 4
iconst_3
baload
bastore
22: iload 3
bipush 20
if_icmpeq 27
23: iload 3
bipush 15
if_icmpeq 27
24: 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.update:([BII)V
25: 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.update:([BII)V
26: goto 29
27: StackMap locals: byte[]
StackMap stack:
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.reserve:([BII)V
28: 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.reserve:([BII)V
29: 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 30 0 this Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
0 30 1 hsFrag Lsun/security/ssl/DTLSOutputRecord$HandshakeMemo;
0 30 2 hsBody [B
1 30 3 hsType B
7 9 4 sidLen I
10 30 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 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:
final RecordType = sun.security.ssl.Ciphertext$RecordType of sun.security.ssl.Ciphertext
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