final class sun.security.ssl.DTLSOutputRecord extends sun.security.ssl.OutputRecord implements sun.security.ssl.DTLSRecord
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.DTLSOutputRecord
super_class: sun.security.ssl.OutputRecord
{
private sun.security.ssl.DTLSOutputRecord$DTLSFragmenter fragmenter;
descriptor: Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
flags: (0x0002) ACC_PRIVATE
int writeEpoch;
descriptor: I
flags: (0x0000)
int prevWriteEpoch;
descriptor: I
flags: (0x0000)
sun.security.ssl.Authenticator prevWriteAuthenticator;
descriptor: Lsun/security/ssl/Authenticator;
flags: (0x0000)
sun.security.ssl.SSLCipher$SSLWriteCipher prevWriteCipher;
descriptor: Lsun/security/ssl/SSLCipher$SSLWriteCipher;
flags: (0x0000)
private volatile boolean isCloseWaiting;
descriptor: Z
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
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
invokestatic sun.security.ssl.SSLCipher$SSLWriteCipher.nullDTlsWriteCipher:()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.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
2: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.isCloseWaiting:Z
3: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
4: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.prevWriteEpoch:I
5: aload 0
invokestatic sun.security.ssl.SSLCipher$SSLWriteCipher.nullDTlsWriteCipher:()Lsun/security/ssl/SSLCipher$SSLWriteCipher;
putfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
6: aload 0
sipush 16717
putfield sun.security.ssl.DTLSOutputRecord.packetSize:I
7: aload 0
getstatic sun.security.ssl.ProtocolVersion.NONE:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
8: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/security/ssl/DTLSOutputRecord;
0 9 1 handshakeHash Lsun/security/ssl/HandshakeHash;
MethodParameters:
Name Flags
handshakeHash
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord.isClosed:Z
ifne 10
2: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 5
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.hasAlert:()Z
ifeq 5
3: aload 0
iconst_1
putfield sun.security.ssl.DTLSOutputRecord.isCloseWaiting:Z
4: goto 10
5: StackMap locals:
StackMap stack:
aload 0
invokespecial sun.security.ssl.OutputRecord.close:()V
6: goto 10
StackMap locals:
StackMap stack: java.lang.Throwable
7: astore 1
8: aload 0
getfield sun.security.ssl.DTLSOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
9: aload 1
athrow
10: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.recordLock:Ljava/util/concurrent/locks/ReentrantLock;
invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
11: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/DTLSOutputRecord;
Exception table:
from to target type
1 7 7 any
Exceptions:
throws java.io.IOException
boolean isClosed();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.isClosed:Z
ifne 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord.isCloseWaiting:Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSOutputRecord;
void initHandshaker();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
aconst_null
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSOutputRecord;
void finishHandshake();
descriptor: ()V
flags: (0x0000)
Code:
stack=0, locals=1, args_size=1
start local 0 0: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/DTLSOutputRecord;
void changeWriteCiphers(sun.security.ssl.SSLCipher$SSLWriteCipher, boolean);
descriptor: (Lsun/security/ssl/SSLCipher$SSLWriteCipher;Z)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.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:
iload 2
ifeq 6
5: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.encodeChangeCipherSpec:()V
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.dispose:()V
7: aload 0
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
putfield sun.security.ssl.DTLSOutputRecord.prevWriteCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
8: aload 0
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
putfield sun.security.ssl.DTLSOutputRecord.prevWriteEpoch:I
9: aload 0
aload 1
putfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
10: aload 0
dup
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
iconst_1
iadd
putfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
11: aload 0
iconst_1
putfield sun.security.ssl.DTLSOutputRecord.isFirstAppOutputRecord:Z
12: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
getfield sun.security.ssl.SSLCipher$SSLWriteCipher.authenticator:Lsun/security/ssl/Authenticator;
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeEpoch:I
invokevirtual sun.security.ssl.Authenticator.setEpochNumber:(I)V
13: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/DTLSOutputRecord;
0 14 1 writeCipher Lsun/security/ssl/SSLCipher$SSLWriteCipher;
0 14 2 useChangeCipherSpec Z
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
writeCipher
useChangeCipherSpec
void encodeAlert(byte, byte);
descriptor: (BB)V
flags: (0x0000)
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.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:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnonnull 8
7: aload 0
new sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
dup
aload 0
invokespecial sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.<init>:(Lsun/security/ssl/DTLSOutputRecord;)V
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
iload 1
iload 2
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.queueUpAlert:(BB)V
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lsun/security/ssl/DTLSOutputRecord;
0 10 1 level B
0 10 2 description B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
level
description
void encodeChangeCipherSpec();
descriptor: ()V
flags: (0x0000)
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.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:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnonnull 6
5: aload 0
new sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
dup
aload 0
invokespecial sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.<init>:(Lsun/security/ssl/DTLSOutputRecord;)V
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.queueUpChangeCipherSpec:()V
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/ssl/DTLSOutputRecord;
Exceptions:
throws java.io.IOException
void encodeHandshake(byte[], int, int);
descriptor: ([BII)V
flags: (0x0000)
Code:
stack=7, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.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.DTLSOutputRecord.firstMessage:Z
ifeq 8
7: aload 0
iconst_0
putfield sun.security.ssl.DTLSOutputRecord.firstMessage:Z
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnonnull 10
9: aload 0
new sun.security.ssl.DTLSOutputRecord$DTLSFragmenter
dup
aload 0
invokespecial sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.<init>:(Lsun/security/ssl/DTLSOutputRecord;)V
putfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
10: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
aload 1
iload 2
iload 3
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.queueUpHandshake:([BII)V
11: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/DTLSOutputRecord;
0 12 1 source [B
0 12 2 offset I
0 12 3 length I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
source
offset
length
sun.security.ssl.Ciphertext encode(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer[], int, int);
descriptor: ([Ljava/nio/ByteBuffer;II[Ljava/nio/ByteBuffer;II)Lsun/security/ssl/Ciphertext;
flags: (0x0000)
Code:
stack=6, locals=7, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.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 application data or cached messages"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
3: StackMap locals:
StackMap stack:
aconst_null
areturn
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.isCloseWaiting:Z
ifeq 8
5: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 7
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 7
6: ldc "outbound has closed, ignore outbound application data"
iconst_0
anewarray java.lang.Object
invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals:
StackMap stack:
aconst_null
astore 1
8: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
iload 3
aload 4
iconst_0
aaload
invokevirtual sun.security.ssl.DTLSOutputRecord.encode:([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
areturn
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 9 0 this Lsun/security/ssl/DTLSOutputRecord;
0 9 1 srcs [Ljava/nio/ByteBuffer;
0 9 2 srcsOffset I
0 9 3 srcsLength I
0 9 4 dsts [Ljava/nio/ByteBuffer;
0 9 5 dstsOffset I
0 9 6 dstsLength I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
srcs
srcsOffset
srcsLength
dsts
dstsOffset
dstsLength
private sun.security.ssl.Ciphertext encode(java.nio.ByteBuffer[], int, int, java.nio.ByteBuffer);
descriptor: ([Ljava/nio/ByteBuffer;IILjava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=15, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.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 5
1: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 4
ldc "ssl"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 4
2: ldc "sequence number extremely close to overflow (2^64-1 packets). Closing connection."
iconst_0
anewarray java.lang.Object
3: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
4: 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
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.security.ssl.DTLSOutputRecord.isEmpty:()Z
ifeq 6
aload 1
ifnull 6
aload 1
arraylength
ifne 9
6: StackMap locals:
StackMap stack:
aload 0
aload 4
invokevirtual sun.security.ssl.DTLSOutputRecord.acquireCiphertext:(Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
astore 5
start local 5 7: aload 5
ifnull 9
8: aload 5
areturn
end local 5 9: StackMap locals:
StackMap stack:
aload 1
ifnull 10
aload 1
arraylength
ifne 11
10: StackMap locals:
StackMap stack:
aconst_null
areturn
11: StackMap locals:
StackMap stack:
iconst_0
istore 5
start local 5 12: iload 2
istore 6
start local 6 13: goto 16
14: StackMap locals: int int
StackMap stack:
iload 5
aload 1
iload 6
aaload
invokevirtual java.nio.ByteBuffer.remaining:()I
iadd
istore 5
15: iinc 6 1
StackMap locals:
StackMap stack:
16: iload 6
iload 2
iload 3
iadd
if_icmplt 14
end local 6 17: iload 5
ifne 19
18: aconst_null
areturn
19: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
ifle 26
20: sipush 16717
aload 0
getfield sun.security.ssl.DTLSOutputRecord.packetSize:I
invokestatic java.lang.Math.min:(II)I
istore 6
start local 6 21: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
22: iload 6
bipush 13
23: invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.calculateFragmentSize:(II)I
istore 6
24: iload 6
sipush 16384
invokestatic java.lang.Math.min:(II)I
istore 6
25: goto 27
end local 6 26: StackMap locals:
StackMap stack:
sipush 16384
istore 6
start local 6 27: StackMap locals: int
StackMap stack:
aload 0
iload 6
invokevirtual sun.security.ssl.DTLSOutputRecord.calculateFragmentSize:(I)I
istore 6
28: aload 4
invokevirtual java.nio.ByteBuffer.position:()I
istore 7
start local 7 29: aload 4
invokevirtual java.nio.ByteBuffer.limit:()I
istore 8
start local 8 30: iload 7
bipush 13
iadd
31: aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
invokevirtual sun.security.ssl.SSLCipher$SSLWriteCipher.getExplicitNonceSize:()I
32: iadd
istore 9
start local 9 33: aload 4
iload 9
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
34: iload 6
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
invokestatic java.lang.Math.min:(II)I
istore 10
start local 10 35: iconst_0
istore 6
36: iload 2
iload 3
iadd
istore 11
start local 11 37: iload 2
istore 12
start local 12 38: goto 47
39: StackMap locals: sun.security.ssl.DTLSOutputRecord java.nio.ByteBuffer[] int int java.nio.ByteBuffer int int int int int int int int
StackMap stack:
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.remaining:()I
iload 10
invokestatic java.lang.Math.min:(II)I
istore 13
start local 13 40: aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.limit:()I
istore 14
start local 14 41: aload 1
iload 12
aaload
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.position:()I
iload 13
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
42: aload 4
aload 1
iload 12
aaload
invokevirtual java.nio.ByteBuffer.put:(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
pop
43: aload 1
iload 12
aaload
iload 14
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
44: iload 10
iload 13
isub
istore 10
45: iload 6
iload 13
iadd
istore 6
end local 14 end local 13 46: iinc 12 1
StackMap locals:
StackMap stack:
47: iload 12
iload 11
if_icmpge 48
iload 10
ifgt 39
end local 12 48: StackMap locals:
StackMap stack:
aload 4
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
49: aload 4
iload 9
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
50: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 56
ldc "record"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 56
51: new java.lang.StringBuilder
dup
ldc "WRITE: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
getfield sun.security.ssl.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;
52: 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;
53: ldc ", length = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 4
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
54: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
iconst_0
anewarray java.lang.Object
55: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
56: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DTLSOutputRecord.writeCipher:Lsun/security/ssl/SSLCipher$SSLWriteCipher;
57: getstatic sun.security.ssl.ContentType.APPLICATION_DATA:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
aload 4
58: iload 7
iload 8
bipush 13
59: aload 0
getfield sun.security.ssl.DTLSOutputRecord.protocolVersion:Lsun/security/ssl/ProtocolVersion;
60: invokestatic sun.security.ssl.DTLSOutputRecord.encrypt:(Lsun/security/ssl/SSLCipher$SSLWriteCipher;BLjava/nio/ByteBuffer;IIILsun/security/ssl/ProtocolVersion;)J
lstore 12
start local 12 61: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 66
ldc "packet"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 66
62: aload 4
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 14
start local 14 63: aload 14
aload 14
invokevirtual java.nio.ByteBuffer.position:()I
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
64: aload 14
iload 7
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
65: ldc "Raw write"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 14
aastore
invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
end local 14 66: StackMap locals: long
StackMap stack:
aload 4
iload 8
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
67: new sun.security.ssl.Ciphertext
dup
getstatic sun.security.ssl.ContentType.APPLICATION_DATA:Lsun/security/ssl/ContentType;
getfield sun.security.ssl.ContentType.id:B
68: getstatic sun.security.ssl.SSLHandshake.NOT_APPLICABLE:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
lload 12
69: invokespecial sun.security.ssl.Ciphertext.<init>:(BBJ)V
areturn
end local 12 end local 11 end local 10 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 70 0 this Lsun/security/ssl/DTLSOutputRecord;
0 70 1 sources [Ljava/nio/ByteBuffer;
0 70 2 offset I
0 70 3 length I
0 70 4 destination Ljava/nio/ByteBuffer;
7 9 5 ct Lsun/security/ssl/Ciphertext;
12 70 5 srcsRemains I
13 17 6 i I
21 26 6 fragLen I
27 70 6 fragLen I
29 70 7 dstPos I
30 70 8 dstLim I
33 70 9 dstContent I
35 70 10 remains I
37 70 11 srcsLen I
38 48 12 i I
40 46 13 amount I
41 46 14 srcLimit I
61 70 12 recordSN J
63 66 14 temporary Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
sources
offset
length
destination
private sun.security.ssl.Ciphertext acquireCiphertext(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 2
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
aload 1
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.acquireCiphertext:(Ljava/nio/ByteBuffer;)Lsun/security/ssl/Ciphertext;
areturn
2: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSOutputRecord;
0 3 1 destination Ljava/nio/ByteBuffer;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
destination
boolean isEmpty();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 1
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isEmpty:()Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/DTLSOutputRecord;
void launchRetransmission();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
ifnull 2
aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.isRetransmittable:()Z
ifeq 2
1: aload 0
getfield sun.security.ssl.DTLSOutputRecord.fragmenter:Lsun/security/ssl/DTLSOutputRecord$DTLSFragmenter;
invokevirtual sun.security.ssl.DTLSOutputRecord$DTLSFragmenter.setRetransmission:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DTLSOutputRecord;
}
SourceFile: "DTLSOutputRecord.java"
NestMembers:
sun.security.ssl.DTLSOutputRecord$DTLSFragmenter sun.security.ssl.DTLSOutputRecord$HandshakeMemo sun.security.ssl.DTLSOutputRecord$RecordMemo
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