8001242: Improve RMI HTTP conformance
authordmocek
Mon, 19 Nov 2012 15:38:56 -0800
changeset 16095 6aa0f442dccb
parent 16094 ac85c7fc438d
child 16096 a4397a7163e3
8001242: Improve RMI HTTP conformance Reviewed-by: ahgross, mchung, smarks
jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java
jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java
--- a/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Mon Nov 19 13:54:12 2012 -0800
+++ b/jdk/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java	Mon Nov 19 15:38:56 2012 -0800
@@ -293,11 +293,14 @@
                     "unexpected EOF reading server response");
 
             if (line.toLowerCase().startsWith(key)) {
-                // if contentLengthFound is true
-                // we should probably do something here
-                responseContentLength =
-                    Integer.parseInt(line.substring(key.length()).trim());
-                contentLengthFound = true;
+                if (contentLengthFound) {
+                    throw new CGIServerException(
+                            "Multiple Content-length entries found.");
+                } else {
+                    responseContentLength =
+                        Integer.parseInt(line.substring(key.length()).trim());
+                    contentLengthFound = true;
+                }
             }
         } while ((line.length() != 0) &&
                  (line.charAt(0) != '\r') && (line.charAt(0) != '\n'));
--- a/jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java	Mon Nov 19 13:54:12 2012 -0800
+++ b/jdk/src/share/classes/sun/rmi/transport/proxy/HttpInputStream.java	Mon Nov 19 15:38:56 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2001, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -70,11 +70,14 @@
                 throw new EOFException();
 
             if (line.toLowerCase().startsWith(key)) {
-                // if contentLengthFound is true
-                // we should probably do something here
-                bytesLeft =
-                    Integer.parseInt(line.substring(key.length()).trim());
-                contentLengthFound = true;
+                if (contentLengthFound) {
+                    throw new IOException(
+                            "Multiple Content-length entries found.");
+                } else {
+                    bytesLeft =
+                        Integer.parseInt(line.substring(key.length()).trim());
+                    contentLengthFound = true;
+                }
             }
 
             // The idea here is to go past the first blank line.