class sun.net.httpserver.ExchangeImpl
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.net.httpserver.ExchangeImpl
super_class: java.lang.Object
{
com.sun.net.httpserver.Headers ;
descriptor: Lcom/sun/net/httpserver/Headers;
flags: (0x0000)
com.sun.net.httpserver.Headers ;
descriptor: Lcom/sun/net/httpserver/Headers;
flags: (0x0000)
sun.net.httpserver.Request req;
descriptor: Lsun/net/httpserver/Request;
flags: (0x0000)
java.lang.String method;
descriptor: Ljava/lang/String;
flags: (0x0000)
boolean writefinished;
descriptor: Z
flags: (0x0000)
java.net.URI uri;
descriptor: Ljava/net/URI;
flags: (0x0000)
sun.net.httpserver.HttpConnection connection;
descriptor: Lsun/net/httpserver/HttpConnection;
flags: (0x0000)
long reqContentLen;
descriptor: J
flags: (0x0000)
long rspContentLen;
descriptor: J
flags: (0x0000)
java.io.InputStream ris;
descriptor: Ljava/io/InputStream;
flags: (0x0000)
java.io.OutputStream ros;
descriptor: Ljava/io/OutputStream;
flags: (0x0000)
java.lang.Thread thread;
descriptor: Ljava/lang/Thread;
flags: (0x0000)
boolean close;
descriptor: Z
flags: (0x0000)
boolean closed;
descriptor: Z
flags: (0x0000)
boolean http10;
descriptor: Z
flags: (0x0000)
private static final java.lang.String pattern;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "EEE, dd MMM yyyy HH:mm:ss zzz"
private static final java.util.TimeZone gmtTZ;
descriptor: Ljava/util/TimeZone;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.ThreadLocal<java.text.DateFormat> dateFormat;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/text/DateFormat;>;
private static final java.lang.String HEAD;
descriptor: Ljava/lang/String;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: "HEAD"
java.io.InputStream uis;
descriptor: Ljava/io/InputStream;
flags: (0x0000)
java.io.OutputStream uos;
descriptor: Ljava/io/OutputStream;
flags: (0x0000)
sun.net.httpserver.LeftOverInputStream uis_orig;
descriptor: Lsun/net/httpserver/LeftOverInputStream;
flags: (0x0000)
sun.net.httpserver.PlaceholderOutputStream uos_orig;
descriptor: Lsun/net/httpserver/PlaceholderOutputStream;
flags: (0x0000)
boolean ;
descriptor: Z
flags: (0x0000)
java.util.Map<java.lang.String, java.lang.Object> attributes;
descriptor: Ljava/util/Map;
flags: (0x0000)
Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/Object;>;
int rcode;
descriptor: I
flags: (0x0000)
com.sun.net.httpserver.HttpPrincipal principal;
descriptor: Lcom/sun/net/httpserver/HttpPrincipal;
flags: (0x0000)
sun.net.httpserver.ServerImpl server;
descriptor: Lsun/net/httpserver/ServerImpl;
flags: (0x0000)
private byte[] rspbuf;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: ldc Lsun/net/httpserver/ExchangeImpl;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic sun.net.httpserver.ExchangeImpl.$assertionsDisabled:Z
3: ldc "GMT"
invokestatic java.util.TimeZone.getTimeZone:(Ljava/lang/String;)Ljava/util/TimeZone;
putstatic sun.net.httpserver.ExchangeImpl.gmtTZ:Ljava/util/TimeZone;
4: new sun.net.httpserver.ExchangeImpl$1
dup
invokespecial sun.net.httpserver.ExchangeImpl$1.<init>:()V
5: putstatic sun.net.httpserver.ExchangeImpl.dateFormat:Ljava/lang/ThreadLocal;
6: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(java.lang.String, java.net.URI, sun.net.httpserver.Request, long, sun.net.httpserver.HttpConnection);
descriptor: (Ljava/lang/String;Ljava/net/URI;Lsun/net/httpserver/Request;JLsun/net/httpserver/HttpConnection;)V
flags: (0x0000)
Code:
stack=3, locals=7, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 6 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_0
putfield sun.net.httpserver.ExchangeImpl.http10:Z
2: aload 0
iconst_m1
putfield sun.net.httpserver.ExchangeImpl.rcode:I
3: aload 0
sipush 128
newarray 8
putfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
4: aload 0
aload 3
putfield sun.net.httpserver.ExchangeImpl.req:Lsun/net/httpserver/Request;
5: aload 0
aload 3
invokevirtual sun.net.httpserver.Request.headers:()Lcom/sun/net/httpserver/Headers;
putfield sun.net.httpserver.ExchangeImpl.reqHdrs:Lcom/sun/net/httpserver/Headers;
6: aload 0
new com.sun.net.httpserver.Headers
dup
invokespecial com.sun.net.httpserver.Headers.<init>:()V
putfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
7: aload 0
aload 1
putfield sun.net.httpserver.ExchangeImpl.method:Ljava/lang/String;
8: aload 0
aload 2
putfield sun.net.httpserver.ExchangeImpl.uri:Ljava/net/URI;
9: aload 0
aload 6
putfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
10: aload 0
lload 4
putfield sun.net.httpserver.ExchangeImpl.reqContentLen:J
11: aload 0
aload 3
invokevirtual sun.net.httpserver.Request.outputStream:()Ljava/io/OutputStream;
putfield sun.net.httpserver.ExchangeImpl.ros:Ljava/io/OutputStream;
12: aload 0
aload 3
invokevirtual sun.net.httpserver.Request.inputStream:()Ljava/io/InputStream;
putfield sun.net.httpserver.ExchangeImpl.ris:Ljava/io/InputStream;
13: aload 0
aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getServerImpl:()Lsun/net/httpserver/ServerImpl;
putfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
14: aload 0
getfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
invokevirtual sun.net.httpserver.ServerImpl.startExchange:()V
15: return
end local 6 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/net/httpserver/ExchangeImpl;
0 16 1 m Ljava/lang/String;
0 16 2 u Ljava/net/URI;
0 16 3 req Lsun/net/httpserver/Request;
0 16 4 len J
0 16 6 connection Lsun/net/httpserver/HttpConnection;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
m
u
req
len
connection
public com.sun.net.httpserver.Headers ();
descriptor: ()Lcom/sun/net/httpserver/Headers;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new sun.net.httpserver.UnmodifiableHeaders
dup
aload 0
getfield sun.net.httpserver.ExchangeImpl.reqHdrs:Lcom/sun/net/httpserver/Headers;
invokespecial sun.net.httpserver.UnmodifiableHeaders.<init>:(Lcom/sun/net/httpserver/Headers;)V
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public com.sun.net.httpserver.Headers ();
descriptor: ()Lcom/sun/net/httpserver/Headers;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public java.net.URI getRequestURI();
descriptor: ()Ljava/net/URI;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.uri:Ljava/net/URI;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public java.lang.String getRequestMethod();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.method:Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public sun.net.httpserver.HttpContextImpl getHttpContext();
descriptor: ()Lsun/net/httpserver/HttpContextImpl;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.getHttpContext:()Lsun/net/httpserver/HttpContextImpl;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
private boolean isHeadRequest();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: ldc "HEAD"
aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getRequestMethod:()Ljava/lang/String;
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public void close();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.closed:Z
ifeq 2
1: return
2: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield sun.net.httpserver.ExchangeImpl.closed:Z
3: aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
ifnull 4
aload 0
getfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
ifnonnull 6
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.close:()V
5: return
6: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.uos_orig:Lsun/net/httpserver/PlaceholderOutputStream;
invokevirtual sun.net.httpserver.PlaceholderOutputStream.isWrapped:()Z
ifne 9
7: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.close:()V
8: return
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
invokevirtual sun.net.httpserver.LeftOverInputStream.isClosed:()Z
ifne 11
10: aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
invokevirtual sun.net.httpserver.LeftOverInputStream.close:()V
11: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
invokevirtual java.io.OutputStream.close:()V
12: goto 15
StackMap locals:
StackMap stack: java.io.IOException
13: pop
14: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.close:()V
15: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/net/httpserver/ExchangeImpl;
Exception table:
from to target type
3 5 13 Class java.io.IOException
6 8 13 Class java.io.IOException
9 12 13 Class java.io.IOException
public java.io.InputStream getRequestBody();
descriptor: ()Ljava/io/InputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
ifnull 2
1: aload 0
getfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.reqContentLen:J
ldc -1
lcmp
ifne 6
3: aload 0
new sun.net.httpserver.ChunkedInputStream
dup
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.ris:Ljava/io/InputStream;
invokespecial sun.net.httpserver.ChunkedInputStream.<init>:(Lsun/net/httpserver/ExchangeImpl;Ljava/io/InputStream;)V
putfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
4: aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
putfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
5: goto 8
6: StackMap locals:
StackMap stack:
aload 0
new sun.net.httpserver.FixedLengthInputStream
dup
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.ris:Ljava/io/InputStream;
aload 0
getfield sun.net.httpserver.ExchangeImpl.reqContentLen:J
invokespecial sun.net.httpserver.FixedLengthInputStream.<init>:(Lsun/net/httpserver/ExchangeImpl;Ljava/io/InputStream;J)V
putfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
7: aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
putfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
8: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lsun/net/httpserver/ExchangeImpl;
sun.net.httpserver.LeftOverInputStream getOriginalInputStream();
descriptor: ()Lsun/net/httpserver/LeftOverInputStream;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.uis_orig:Lsun/net/httpserver/LeftOverInputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public int getResponseCode();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.rcode:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public java.io.OutputStream getResponseBody();
descriptor: ()Ljava/io/OutputStream;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
ifnonnull 3
1: aload 0
new sun.net.httpserver.PlaceholderOutputStream
dup
aconst_null
invokespecial sun.net.httpserver.PlaceholderOutputStream.<init>:(Ljava/io/OutputStream;)V
putfield sun.net.httpserver.ExchangeImpl.uos_orig:Lsun/net/httpserver/PlaceholderOutputStream;
2: aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.uos_orig:Lsun/net/httpserver/PlaceholderOutputStream;
putfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
3: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/net/httpserver/ExchangeImpl;
sun.net.httpserver.PlaceholderOutputStream getPlaceholderResponseBody();
descriptor: ()Lsun/net/httpserver/PlaceholderOutputStream;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getResponseBody:()Ljava/io/OutputStream;
pop
1: aload 0
getfield sun.net.httpserver.ExchangeImpl.uos_orig:Lsun/net/httpserver/PlaceholderOutputStream;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/net/httpserver/ExchangeImpl;
public void (int, long);
descriptor: (IJ)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=7, locals=10, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.sentHeaders:Z
ifeq 2
1: new java.io.IOException
dup
ldc "headers already sent"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield sun.net.httpserver.ExchangeImpl.rcode:I
3: new java.lang.StringBuilder
dup
ldc "HTTP/1.1 "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
iload 1
invokestatic sun.net.httpserver.Code.msg:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
ldc "\r\n"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 4
start local 4 4: new java.io.BufferedOutputStream
dup
aload 0
getfield sun.net.httpserver.ExchangeImpl.ros:Ljava/io/OutputStream;
invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
astore 5
start local 5 5: aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getPlaceholderResponseBody:()Lsun/net/httpserver/PlaceholderOutputStream;
astore 6
start local 6 6: aload 5
aload 0
aload 4
iconst_0
invokevirtual sun.net.httpserver.ExchangeImpl.bytes:(Ljava/lang/String;I)[B
iconst_0
aload 4
invokevirtual java.lang.String.length:()I
invokevirtual java.io.OutputStream.write:([BII)V
7: iconst_0
istore 7
start local 7 8: aload 0
getfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
ldc "Date"
getstatic sun.net.httpserver.ExchangeImpl.dateFormat:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.text.DateFormat
new java.util.Date
dup
invokespecial java.util.Date.<init>:()V
invokevirtual java.text.DateFormat.format:(Ljava/util/Date;)Ljava/lang/String;
invokevirtual com.sun.net.httpserver.Headers.set:(Ljava/lang/String;Ljava/lang/String;)V
9: iload 1
bipush 100
if_icmplt 10
iload 1
sipush 200
if_icmplt 12
10: StackMap locals: sun.net.httpserver.ExchangeImpl int long java.lang.String java.io.OutputStream sun.net.httpserver.PlaceholderOutputStream int
StackMap stack:
iload 1
sipush 204
if_icmpeq 12
11: iload 1
sipush 304
if_icmpne 19
12: StackMap locals:
StackMap stack:
lload 2
ldc -1
lcmp
ifeq 18
13: aload 0
getfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
invokevirtual sun.net.httpserver.ServerImpl.getLogger:()Ljava/util/logging/Logger;
astore 8
start local 8 14: new java.lang.StringBuilder
dup
ldc "sendResponseHeaders: rCode = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
15: ldc ": forcing contentLen = -1"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 9
start local 9 17: aload 8
aload 9
invokevirtual java.util.logging.Logger.warning:(Ljava/lang/String;)V
end local 9 end local 8 18: StackMap locals:
StackMap stack:
ldc -1
lstore 2
19: StackMap locals:
StackMap stack:
aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.isHeadRequest:()Z
ifeq 28
20: lload 2
lconst_0
lcmp
iflt 25
21: aload 0
getfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
invokevirtual sun.net.httpserver.ServerImpl.getLogger:()Ljava/util/logging/Logger;
astore 8
start local 8 22: ldc "sendResponseHeaders: being invoked with a content length for a HEAD request"
23: astore 9
start local 9 24: aload 8
aload 9
invokevirtual java.util.logging.Logger.warning:(Ljava/lang/String;)V
end local 9 end local 8 25: StackMap locals:
StackMap stack:
iconst_1
istore 7
26: lconst_0
lstore 2
27: goto 41
28: StackMap locals:
StackMap stack:
lload 2
lconst_0
lcmp
ifne 36
29: aload 0
getfield sun.net.httpserver.ExchangeImpl.http10:Z
ifeq 33
30: aload 6
new sun.net.httpserver.UndefLengthOutputStream
dup
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.ros:Ljava/io/OutputStream;
invokespecial sun.net.httpserver.UndefLengthOutputStream.<init>:(Lsun/net/httpserver/ExchangeImpl;Ljava/io/OutputStream;)V
invokevirtual sun.net.httpserver.PlaceholderOutputStream.setWrappedStream:(Ljava/io/OutputStream;)V
31: aload 0
iconst_1
putfield sun.net.httpserver.ExchangeImpl.close:Z
32: goto 41
33: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
ldc "Transfer-encoding"
ldc "chunked"
invokevirtual com.sun.net.httpserver.Headers.set:(Ljava/lang/String;Ljava/lang/String;)V
34: aload 6
new sun.net.httpserver.ChunkedOutputStream
dup
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.ros:Ljava/io/OutputStream;
invokespecial sun.net.httpserver.ChunkedOutputStream.<init>:(Lsun/net/httpserver/ExchangeImpl;Ljava/io/OutputStream;)V
invokevirtual sun.net.httpserver.PlaceholderOutputStream.setWrappedStream:(Ljava/io/OutputStream;)V
35: goto 41
36: StackMap locals:
StackMap stack:
lload 2
ldc -1
lcmp
ifne 39
37: iconst_1
istore 7
38: lconst_0
lstore 2
39: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
ldc "Content-length"
lload 2
invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
invokevirtual com.sun.net.httpserver.Headers.set:(Ljava/lang/String;Ljava/lang/String;)V
40: aload 6
new sun.net.httpserver.FixedLengthOutputStream
dup
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.ros:Ljava/io/OutputStream;
lload 2
invokespecial sun.net.httpserver.FixedLengthOutputStream.<init>:(Lsun/net/httpserver/ExchangeImpl;Ljava/io/OutputStream;J)V
invokevirtual sun.net.httpserver.PlaceholderOutputStream.setWrappedStream:(Ljava/io/OutputStream;)V
41: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspHdrs:Lcom/sun/net/httpserver/Headers;
aload 5
invokevirtual sun.net.httpserver.ExchangeImpl.write:(Lcom/sun/net/httpserver/Headers;Ljava/io/OutputStream;)V
42: aload 0
lload 2
putfield sun.net.httpserver.ExchangeImpl.rspContentLen:J
43: aload 5
invokevirtual java.io.OutputStream.flush:()V
44: aconst_null
astore 5
45: aload 0
iconst_1
putfield sun.net.httpserver.ExchangeImpl.sentHeaders:Z
46: iload 7
ifeq 50
47: new sun.net.httpserver.WriteFinishedEvent
dup
aload 0
invokespecial sun.net.httpserver.WriteFinishedEvent.<init>:(Lsun/net/httpserver/ExchangeImpl;)V
astore 8
start local 8 48: aload 0
getfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
aload 8
invokevirtual sun.net.httpserver.ServerImpl.addEvent:(Lsun/net/httpserver/Event;)V
49: aload 0
iconst_1
putfield sun.net.httpserver.ExchangeImpl.closed:Z
end local 8 50: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.server:Lsun/net/httpserver/ServerImpl;
iload 1
aload 0
getfield sun.net.httpserver.ExchangeImpl.req:Lsun/net/httpserver/Request;
invokevirtual sun.net.httpserver.Request.requestLine:()Ljava/lang/String;
aconst_null
invokevirtual sun.net.httpserver.ServerImpl.logReply:(ILjava/lang/String;Ljava/lang/String;)V
51: return
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 52 0 this Lsun/net/httpserver/ExchangeImpl;
0 52 1 rCode I
0 52 2 contentLen J
4 52 4 statusLine Ljava/lang/String;
5 52 5 tmpout Ljava/io/OutputStream;
6 52 6 o Lsun/net/httpserver/PlaceholderOutputStream;
8 52 7 noContentToSend Z
14 18 8 logger Ljava/util/logging/Logger;
17 18 9 msg Ljava/lang/String;
22 25 8 logger Ljava/util/logging/Logger;
24 25 9 msg Ljava/lang/String;
48 50 8 e Lsun/net/httpserver/WriteFinishedEvent;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
rCode
contentLen
void (com.sun.net.httpserver.Headers, java.io.OutputStream);
descriptor: (Lcom/sun/net/httpserver/Headers;Ljava/io/OutputStream;)V
flags: (0x0000)
Code:
stack=4, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual com.sun.net.httpserver.Headers.entrySet:()Ljava/util/Set;
astore 3
start local 3 1: aload 3
invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
astore 5
goto 18
StackMap locals: sun.net.httpserver.ExchangeImpl com.sun.net.httpserver.Headers java.io.OutputStream java.util.Set top java.util.Iterator
StackMap stack:
2: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.Map$Entry
astore 4
start local 4 3: aload 4
invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 4: aload 4
invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
checkcast java.util.List
astore 8
start local 8 5: aload 8
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 10
goto 17
StackMap locals: sun.net.httpserver.ExchangeImpl com.sun.net.httpserver.Headers java.io.OutputStream java.util.Set java.util.Map$Entry java.util.Iterator java.lang.String top java.util.List top java.util.Iterator
StackMap stack:
6: aload 10
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 9
start local 9 7: aload 6
invokevirtual java.lang.String.length:()I
istore 11
start local 11 8: aload 0
aload 6
iconst_2
invokevirtual sun.net.httpserver.ExchangeImpl.bytes:(Ljava/lang/String;I)[B
astore 7
start local 7 9: aload 7
iload 11
iinc 11 1
bipush 58
bastore
10: aload 7
iload 11
iinc 11 1
bipush 32
bastore
11: aload 2
aload 7
iconst_0
iload 11
invokevirtual java.io.OutputStream.write:([BII)V
12: aload 0
aload 9
iconst_2
invokevirtual sun.net.httpserver.ExchangeImpl.bytes:(Ljava/lang/String;I)[B
astore 7
13: aload 9
invokevirtual java.lang.String.length:()I
istore 11
14: aload 7
iload 11
iinc 11 1
bipush 13
bastore
15: aload 7
iload 11
iinc 11 1
bipush 10
bastore
16: aload 2
aload 7
iconst_0
iload 11
invokevirtual java.io.OutputStream.write:([BII)V
end local 11 end local 9 end local 7 17: StackMap locals:
StackMap stack:
aload 10
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 8 end local 6 end local 4 18: StackMap locals: sun.net.httpserver.ExchangeImpl com.sun.net.httpserver.Headers java.io.OutputStream java.util.Set top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
19: aload 2
bipush 13
invokevirtual java.io.OutputStream.write:(I)V
20: aload 2
bipush 10
invokevirtual java.io.OutputStream.write:(I)V
21: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 22 0 this Lsun/net/httpserver/ExchangeImpl;
0 22 1 map Lcom/sun/net/httpserver/Headers;
0 22 2 os Ljava/io/OutputStream;
1 22 3 entries Ljava/util/Set<Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;>;
3 18 4 entry Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/List<Ljava/lang/String;>;>;
4 18 6 key Ljava/lang/String;
9 17 7 buf [B
5 18 8 values Ljava/util/List<Ljava/lang/String;>;
7 17 9 val Ljava/lang/String;
8 17 11 i I
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
map
os
private byte[] bytes(java.lang.String, int);
descriptor: (Ljava/lang/String;I)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.lang.String.length:()I
istore 3
start local 3 1: iload 3
iload 2
iadd
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
arraylength
if_icmple 4
2: iload 3
iload 2
iadd
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
arraylength
isub
istore 4
start local 4 3: aload 0
iconst_2
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
arraylength
iload 4
iadd
imul
newarray 8
putfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
end local 4 4: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.lang.String.toCharArray:()[C
astore 4
start local 4 5: iconst_0
istore 5
start local 5 6: goto 9
7: StackMap locals: char[] int
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
iload 5
aload 4
iload 5
caload
i2b
bastore
8: iinc 5 1
StackMap locals:
StackMap stack:
9: iload 5
aload 4
arraylength
if_icmplt 7
end local 5 10: aload 0
getfield sun.net.httpserver.ExchangeImpl.rspbuf:[B
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/net/httpserver/ExchangeImpl;
0 11 1 s Ljava/lang/String;
0 11 2 extra I
1 11 3 slen I
3 4 4 diff I
5 11 4 c [C
6 10 5 i I
MethodParameters:
Name Flags
s
extra
public java.net.InetSocketAddress getRemoteAddress();
descriptor: ()Ljava/net/InetSocketAddress;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.getChannel:()Ljava/nio/channels/SocketChannel;
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
astore 1
start local 1 1: aload 1
invokevirtual java.net.Socket.getInetAddress:()Ljava/net/InetAddress;
astore 2
start local 2 2: aload 1
invokevirtual java.net.Socket.getPort:()I
istore 3
start local 3 3: new java.net.InetSocketAddress
dup
aload 2
iload 3
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/net/httpserver/ExchangeImpl;
1 4 1 s Ljava/net/Socket;
2 4 2 ia Ljava/net/InetAddress;
3 4 3 port I
public java.net.InetSocketAddress getLocalAddress();
descriptor: ()Ljava/net/InetSocketAddress;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.getChannel:()Ljava/nio/channels/SocketChannel;
invokevirtual java.nio.channels.SocketChannel.socket:()Ljava/net/Socket;
astore 1
start local 1 1: aload 1
invokevirtual java.net.Socket.getLocalAddress:()Ljava/net/InetAddress;
astore 2
start local 2 2: aload 1
invokevirtual java.net.Socket.getLocalPort:()I
istore 3
start local 3 3: new java.net.InetSocketAddress
dup
aload 2
iload 3
invokespecial java.net.InetSocketAddress.<init>:(Ljava/net/InetAddress;I)V
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/net/httpserver/ExchangeImpl;
1 4 1 s Ljava/net/Socket;
2 4 2 ia Ljava/net/InetAddress;
3 4 3 port I
public java.lang.String getProtocol();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.req:Lsun/net/httpserver/Request;
invokevirtual sun.net.httpserver.Request.requestLine:()Ljava/lang/String;
astore 1
start local 1 1: aload 1
bipush 32
invokevirtual java.lang.String.lastIndexOf:(I)I
istore 2
start local 2 2: aload 1
iload 2
iconst_1
iadd
invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/net/httpserver/ExchangeImpl;
1 3 1 reqline Ljava/lang/String;
2 3 2 index I
public javax.net.ssl.SSLSession getSSLSession();
descriptor: ()Ljavax/net/ssl/SSLSession;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
invokevirtual sun.net.httpserver.HttpConnection.getSSLEngine:()Ljavax/net/ssl/SSLEngine;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aconst_null
areturn
3: StackMap locals: javax.net.ssl.SSLEngine
StackMap stack:
aload 1
invokevirtual javax.net.ssl.SSLEngine.getSession:()Ljavax/net/ssl/SSLSession;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/net/httpserver/ExchangeImpl;
1 4 1 e Ljavax/net/ssl/SSLEngine;
public java.lang.Object getAttribute(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/Object;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
ldc "null name parameter"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
ifnonnull 4
3: aload 0
aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getHttpContext:()Lsun/net/httpserver/HttpContextImpl;
invokevirtual sun.net.httpserver.HttpContextImpl.getAttributes:()Ljava/util/Map;
putfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
aload 1
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/net/httpserver/ExchangeImpl;
0 5 1 name Ljava/lang/String;
MethodParameters:
Name Flags
name
public void setAttribute(java.lang.String, java.lang.Object);
descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
ifnonnull 2
1: new java.lang.NullPointerException
dup
ldc "null name parameter"
invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
ifnonnull 4
3: aload 0
aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getHttpContext:()Lsun/net/httpserver/HttpContextImpl;
invokevirtual sun.net.httpserver.HttpContextImpl.getAttributes:()Ljava/util/Map;
putfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
4: StackMap locals:
StackMap stack:
aload 0
getfield sun.net.httpserver.ExchangeImpl.attributes:Ljava/util/Map;
aload 1
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/net/httpserver/ExchangeImpl;
0 6 1 name Ljava/lang/String;
0 6 2 value Ljava/lang/Object;
MethodParameters:
Name Flags
name
value
public void setStreams(java.io.InputStream, java.io.OutputStream);
descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: getstatic sun.net.httpserver.ExchangeImpl.$assertionsDisabled:Z
ifne 1
aload 0
getfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
ifnull 3
2: aload 0
aload 1
putfield sun.net.httpserver.ExchangeImpl.uis:Ljava/io/InputStream;
3: StackMap locals:
StackMap stack:
aload 2
ifnull 5
4: aload 0
aload 2
putfield sun.net.httpserver.ExchangeImpl.uos:Ljava/io/OutputStream;
5: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/net/httpserver/ExchangeImpl;
0 6 1 i Ljava/io/InputStream;
0 6 2 o Ljava/io/OutputStream;
MethodParameters:
Name Flags
i
o
sun.net.httpserver.HttpConnection getConnection();
descriptor: ()Lsun/net/httpserver/HttpConnection;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.connection:Lsun/net/httpserver/HttpConnection;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
sun.net.httpserver.ServerImpl getServerImpl();
descriptor: ()Lsun/net/httpserver/ServerImpl;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual sun.net.httpserver.ExchangeImpl.getHttpContext:()Lsun/net/httpserver/HttpContextImpl;
invokevirtual sun.net.httpserver.HttpContextImpl.getServerImpl:()Lsun/net/httpserver/ServerImpl;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
public com.sun.net.httpserver.HttpPrincipal getPrincipal();
descriptor: ()Lcom/sun/net/httpserver/HttpPrincipal;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.net.httpserver.ExchangeImpl.principal:Lcom/sun/net/httpserver/HttpPrincipal;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/net/httpserver/ExchangeImpl;
void setPrincipal(com.sun.net.httpserver.HttpPrincipal);
descriptor: (Lcom/sun/net/httpserver/HttpPrincipal;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
putfield sun.net.httpserver.ExchangeImpl.principal:Lcom/sun/net/httpserver/HttpPrincipal;
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/net/httpserver/ExchangeImpl;
0 2 1 principal Lcom/sun/net/httpserver/HttpPrincipal;
MethodParameters:
Name Flags
principal
static sun.net.httpserver.ExchangeImpl get(com.sun.net.httpserver.HttpExchange);
descriptor: (Lcom/sun/net/httpserver/HttpExchange;)Lsun/net/httpserver/ExchangeImpl;
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
instanceof sun.net.httpserver.HttpExchangeImpl
ifeq 2
1: aload 0
checkcast sun.net.httpserver.HttpExchangeImpl
invokevirtual sun.net.httpserver.HttpExchangeImpl.getExchangeImpl:()Lsun/net/httpserver/ExchangeImpl;
areturn
2: StackMap locals:
StackMap stack:
getstatic sun.net.httpserver.ExchangeImpl.$assertionsDisabled:Z
ifne 3
aload 0
instanceof sun.net.httpserver.HttpsExchangeImpl
ifne 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aload 0
checkcast sun.net.httpserver.HttpsExchangeImpl
invokevirtual sun.net.httpserver.HttpsExchangeImpl.getExchangeImpl:()Lsun/net/httpserver/ExchangeImpl;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 t Lcom/sun/net/httpserver/HttpExchange;
MethodParameters:
Name Flags
t
}
SourceFile: "ExchangeImpl.java"
NestMembers:
sun.net.httpserver.ExchangeImpl$1
InnerClasses:
public abstract Entry = java.util.Map$Entry of java.util.Map
sun.net.httpserver.ExchangeImpl$1