final class sun.rmi.transport.proxy.CGIForwardCommand implements sun.rmi.transport.proxy.CGICommandHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.rmi.transport.proxy.CGIForwardCommand
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
         0: .line 219
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/transport/proxy/CGIForwardCommand;

  public java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
         0: .line 222
            ldc "forward"
            areturn
        end local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/rmi/transport/proxy/CGIForwardCommand;

  private java.lang.String getLine(java.io.DataInputStream);
    descriptor: (Ljava/io/DataInputStream;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
        start local 1 // java.io.DataInputStream socketIn
         0: .line 227
            aload 1 /* socketIn */
            invokevirtual java.io.DataInputStream.readLine:()Ljava/lang/String;
            areturn
        end local 1 // java.io.DataInputStream socketIn
        end local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lsun/rmi/transport/proxy/CGIForwardCommand;
            0    1     1  socketIn  Ljava/io/DataInputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      socketIn  

  public void execute(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=2
        start local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
        start local 1 // java.lang.String param
         0: .line 232
            getstatic sun.rmi.transport.proxy.CGIHandler.RequestMethod:Ljava/lang/String;
            ldc "POST"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 233
            new sun.rmi.transport.proxy.CGIClientException
            dup
            ldc "can only forward POST requests"
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 237
      StackMap locals:
      StackMap stack:
            aload 1 /* param */
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 2 /* port */
        start local 2 // int port
         3: .line 238
            goto 6
        end local 2 // int port
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
         4: astore 3 /* e */
        start local 3 // java.lang.NumberFormatException e
         5: .line 239
            new sun.rmi.transport.proxy.CGIClientException
            dup
            ldc "invalid port number."
            aload 3 /* e */
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.NumberFormatException e
        start local 2 // int port
         6: .line 241
      StackMap locals: int
      StackMap stack:
            iload 2 /* port */
            ifle 7
            iload 2 /* port */
            ldc 65535
            if_icmple 8
         7: .line 242
      StackMap locals:
      StackMap stack:
            new sun.rmi.transport.proxy.CGIClientException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid port: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 243
      StackMap locals:
      StackMap stack:
            iload 2 /* port */
            sipush 1024
            if_icmpge 12
         9: .line 244
            new sun.rmi.transport.proxy.CGIClientException
            dup
            new java.lang.StringBuilder
            dup
            ldc "permission denied for port: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 245
            iload 2 /* port */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 244
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 250
      StackMap locals:
      StackMap stack:
            new java.net.Socket
            dup
            invokestatic java.net.InetAddress.getLocalHost:()Ljava/net/InetAddress;
            iload 2 /* port */
            invokespecial java.net.Socket.<init>:(Ljava/net/InetAddress;I)V
            astore 4 /* socket */
        start local 4 // java.net.Socket socket
        13: .line 251
            goto 16
        end local 4 // java.net.Socket socket
      StackMap locals:
      StackMap stack: java.io.IOException
        14: astore 5 /* e */
        start local 5 // java.io.IOException e
        15: .line 252
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "could not connect to local port"
            aload 5 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException e
        start local 4 // java.net.Socket socket
        16: .line 258
      StackMap locals: sun.rmi.transport.proxy.CGIForwardCommand java.lang.String int top java.net.Socket
      StackMap stack:
            new java.io.DataInputStream
            dup
            getstatic java.lang.System.in:Ljava/io/InputStream;
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 5 /* clientIn */
        start local 5 // java.io.DataInputStream clientIn
        17: .line 259
            getstatic sun.rmi.transport.proxy.CGIHandler.ContentLength:I
            newarray 8
            astore 3 /* buffer */
        start local 3 // byte[] buffer
        18: .line 261
            aload 5 /* clientIn */
            aload 3 /* buffer */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        19: .line 262
            goto 24
      StackMap locals: sun.rmi.transport.proxy.CGIForwardCommand java.lang.String int byte[] java.net.Socket java.io.DataInputStream
      StackMap stack: java.io.EOFException
        20: astore 6 /* e */
        start local 6 // java.io.EOFException e
        21: .line 263
            new sun.rmi.transport.proxy.CGIClientException
            dup
            ldc "unexpected EOF reading request body"
            aload 6 /* e */
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.io.EOFException e
        22: .line 264
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
        23: .line 265
            new sun.rmi.transport.proxy.CGIClientException
            dup
            ldc "error reading request body"
            aload 6 /* e */
            invokespecial sun.rmi.transport.proxy.CGIClientException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.io.IOException e
        24: .line 273
      StackMap locals:
      StackMap stack:
            new java.io.DataOutputStream
            dup
            aload 4 /* socket */
            invokevirtual java.net.Socket.getOutputStream:()Ljava/io/OutputStream;
            invokespecial java.io.DataOutputStream.<init>:(Ljava/io/OutputStream;)V
        25: .line 272
            astore 6 /* socketOut */
        start local 6 // java.io.DataOutputStream socketOut
        26: .line 274
            aload 6 /* socketOut */
            ldc "POST / HTTP/1.0\r\n"
            invokevirtual java.io.DataOutputStream.writeBytes:(Ljava/lang/String;)V
        27: .line 275
            aload 6 /* socketOut */
            new java.lang.StringBuilder
            dup
            ldc "Content-length: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        28: .line 276
            getstatic sun.rmi.transport.proxy.CGIHandler.ContentLength:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "\r\n\r\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        29: .line 275
            invokevirtual java.io.DataOutputStream.writeBytes:(Ljava/lang/String;)V
        30: .line 277
            aload 6 /* socketOut */
            aload 3 /* buffer */
            invokevirtual java.io.DataOutputStream.write:([B)V
        31: .line 278
            aload 6 /* socketOut */
            invokevirtual java.io.DataOutputStream.flush:()V
        end local 6 // java.io.DataOutputStream socketOut
        32: .line 279
            goto 35
      StackMap locals:
      StackMap stack: java.io.IOException
        33: astore 6 /* e */
        start local 6 // java.io.IOException e
        34: .line 280
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "error writing to server"
            aload 6 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 6 // java.io.IOException e
        35: .line 288
      StackMap locals:
      StackMap stack:
            new java.io.DataInputStream
            dup
            aload 4 /* socket */
            invokevirtual java.net.Socket.getInputStream:()Ljava/io/InputStream;
            invokespecial java.io.DataInputStream.<init>:(Ljava/io/InputStream;)V
            astore 6 /* socketIn */
        start local 6 // java.io.DataInputStream socketIn
        36: .line 289
            goto 39
        end local 6 // java.io.DataInputStream socketIn
      StackMap locals:
      StackMap stack: java.io.IOException
        37: astore 7 /* e */
        start local 7 // java.io.IOException e
        38: .line 290
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "error reading from server"
            aload 7 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 7 // java.io.IOException e
        start local 6 // java.io.DataInputStream socketIn
        39: .line 292
      StackMap locals: java.io.DataInputStream
      StackMap stack:
            ldc "Content-length:"
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 7 /* key */
        start local 7 // java.lang.String key
        40: .line 293
            iconst_0
            istore 8 /* contentLengthFound */
        start local 8 // boolean contentLengthFound
        41: .line 295
            iconst_m1
            istore 10 /* responseContentLength */
        start local 10 // int responseContentLength
        42: .line 298
      StackMap locals: sun.rmi.transport.proxy.CGIForwardCommand java.lang.String int byte[] java.net.Socket java.io.DataInputStream java.io.DataInputStream java.lang.String int top int
      StackMap stack:
            aload 0 /* this */
            aload 6 /* socketIn */
            invokevirtual sun.rmi.transport.proxy.CGIForwardCommand.getLine:(Ljava/io/DataInputStream;)Ljava/lang/String;
            astore 9 /* line */
        start local 9 // java.lang.String line
        43: .line 299
            goto 46
        end local 9 // java.lang.String line
      StackMap locals:
      StackMap stack: java.io.IOException
        44: astore 11 /* e */
        start local 11 // java.io.IOException e
        45: .line 300
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "error reading from server"
            aload 11 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.io.IOException e
        start local 9 // java.lang.String line
        46: .line 302
      StackMap locals: sun.rmi.transport.proxy.CGIForwardCommand java.lang.String int byte[] java.net.Socket java.io.DataInputStream java.io.DataInputStream java.lang.String int java.lang.String int
      StackMap stack:
            aload 9 /* line */
            ifnonnull 50
        47: .line 303
            new sun.rmi.transport.proxy.CGIServerException
            dup
        48: .line 304
            ldc "unexpected EOF reading server response"
        49: .line 303
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;)V
            athrow
        50: .line 306
      StackMap locals:
      StackMap stack:
            aload 9 /* line */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            aload 7 /* key */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 58
        51: .line 307
            iload 8 /* contentLengthFound */
            ifeq 55
        52: .line 308
            new sun.rmi.transport.proxy.CGIServerException
            dup
        53: .line 309
            ldc "Multiple Content-length entries found."
        54: .line 308
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;)V
            athrow
        55: .line 312
      StackMap locals:
      StackMap stack:
            aload 9 /* line */
            aload 7 /* key */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
        56: .line 311
            istore 10 /* responseContentLength */
        57: .line 313
            iconst_1
            istore 8 /* contentLengthFound */
        58: .line 316
      StackMap locals:
      StackMap stack:
            aload 9 /* line */
            invokevirtual java.lang.String.length:()I
            ifeq 60
        59: .line 317
            aload 9 /* line */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 13
            if_icmpeq 60
            aload 9 /* line */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 10
            if_icmpne 42
        60: .line 319
      StackMap locals:
      StackMap stack:
            iload 8 /* contentLengthFound */
            ifeq 61
            iload 10 /* responseContentLength */
            ifge 64
        61: .line 320
      StackMap locals:
      StackMap stack:
            new sun.rmi.transport.proxy.CGIServerException
            dup
        62: .line 321
            ldc "missing or invalid content length in server response"
        63: .line 320
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;)V
            athrow
        64: .line 322
      StackMap locals:
      StackMap stack:
            iload 10 /* responseContentLength */
            newarray 8
            astore 3 /* buffer */
        65: .line 324
            aload 6 /* socketIn */
            aload 3 /* buffer */
            invokevirtual java.io.DataInputStream.readFully:([B)V
        66: .line 325
            goto 73
      StackMap locals:
      StackMap stack: java.io.EOFException
        67: astore 11 /* e */
        start local 11 // java.io.EOFException e
        68: .line 326
            new sun.rmi.transport.proxy.CGIServerException
            dup
        69: .line 327
            ldc "unexpected EOF reading server response"
            aload 11 /* e */
        70: .line 326
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.io.EOFException e
        71: .line 328
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 11 /* e */
        start local 11 // java.io.IOException e
        72: .line 329
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "error reading from server"
            aload 11 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.io.IOException e
        73: .line 335
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Status: 200 OK"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        74: .line 336
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Content-type: application/octet-stream"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        75: .line 337
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc ""
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        76: .line 339
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 3 /* buffer */
            invokevirtual java.io.PrintStream.write:([B)V
        77: .line 340
            goto 80
      StackMap locals:
      StackMap stack: java.io.IOException
        78: astore 11 /* e */
        start local 11 // java.io.IOException e
        79: .line 341
            new sun.rmi.transport.proxy.CGIServerException
            dup
            ldc "error writing response"
            aload 11 /* e */
            invokespecial sun.rmi.transport.proxy.CGIServerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 11 // java.io.IOException e
        80: .line 343
      StackMap locals:
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.flush:()V
        81: .line 344
            return
        end local 10 // int responseContentLength
        end local 9 // java.lang.String line
        end local 8 // boolean contentLengthFound
        end local 7 // java.lang.String key
        end local 6 // java.io.DataInputStream socketIn
        end local 5 // java.io.DataInputStream clientIn
        end local 4 // java.net.Socket socket
        end local 3 // byte[] buffer
        end local 2 // int port
        end local 1 // java.lang.String param
        end local 0 // sun.rmi.transport.proxy.CGIForwardCommand this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   82     0                   this  Lsun/rmi/transport/proxy/CGIForwardCommand;
            0   82     1                  param  Ljava/lang/String;
            3    4     2                   port  I
            6   82     2                   port  I
            5    6     3                      e  Ljava/lang/NumberFormatException;
           18   82     3                 buffer  [B
           13   14     4                 socket  Ljava/net/Socket;
           16   82     4                 socket  Ljava/net/Socket;
           15   16     5                      e  Ljava/io/IOException;
           17   82     5               clientIn  Ljava/io/DataInputStream;
           21   22     6                      e  Ljava/io/EOFException;
           23   24     6                      e  Ljava/io/IOException;
           26   32     6              socketOut  Ljava/io/DataOutputStream;
           34   35     6                      e  Ljava/io/IOException;
           36   37     6               socketIn  Ljava/io/DataInputStream;
           39   82     6               socketIn  Ljava/io/DataInputStream;
           38   39     7                      e  Ljava/io/IOException;
           40   82     7                    key  Ljava/lang/String;
           41   82     8     contentLengthFound  Z
           43   44     9                   line  Ljava/lang/String;
           46   82     9                   line  Ljava/lang/String;
           42   82    10  responseContentLength  I
           45   46    11                      e  Ljava/io/IOException;
           68   71    11                      e  Ljava/io/EOFException;
           72   73    11                      e  Ljava/io/IOException;
           79   80    11                      e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NumberFormatException
          12    13      14  Class java.io.IOException
          18    19      20  Class java.io.EOFException
          18    19      22  Class java.io.IOException
          24    32      33  Class java.io.IOException
          35    36      37  Class java.io.IOException
          42    43      44  Class java.io.IOException
          65    66      67  Class java.io.EOFException
          65    66      71  Class java.io.IOException
          76    77      78  Class java.io.IOException
    Exceptions:
      throws sun.rmi.transport.proxy.CGIClientException, sun.rmi.transport.proxy.CGIServerException
    MethodParameters:
       Name  Flags
      param  
}
SourceFile: "CGIHandler.java"