]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR classpath/28580 (HTTP HEAD fails on chuncked encoding)
authorDavid Daney <ddaney@avtrex.com>
Mon, 11 Sep 2006 18:15:27 +0000 (18:15 +0000)
committerDavid Daney <daney@gcc.gnu.org>
Mon, 11 Sep 2006 18:15:27 +0000 (18:15 +0000)
       PR classpath/28580
       * gnu/java/net/protocol/http/Request.java (readResponse):  Call
       createResponseBodyStream in more cases and with new parameter.
       (createResponseBodyStream):  Added new parameter mayHaveBody. Handle
       HEAD and !mayHaveBody responses specially.

From-SVN: r116853

libjava/classpath/ChangeLog.gcj
libjava/classpath/gnu/java/net/protocol/http/Request.java

index 18a890a928e0d31132ba9edbf34255be21e0ac68..923e6070d8247d3f715cc6a0ac934eb233d1b4a1 100644 (file)
@@ -1,3 +1,11 @@
+2006-09-11 David Daney  <ddaney@avtrex.com>
+
+       PR classpath/28580
+       * gnu/java/net/protocol/http/Request.java (readResponse):  Call 
+       createResponseBodyStream in more cases and with new parameter.
+       (createResponseBodyStream):  Added new parameter mayHaveBody. Handle
+       HEAD and !mayHaveBody responses specially.
+
 2006-09-05  Gary Benson  <gbenson@redhat.com>
 
        * java/net/SocketPermission.java
index e15ec4182a4ea4235d6a18433a25d27e22922b8a..cd9d7ea44232d7e8fb867a1cd10bc164c6f37843 100644 (file)
@@ -419,13 +419,16 @@ public class Request
     switch (code)
       {
       case 100:
+        break;
       case 204:
       case 205:
       case 304:
+        body = createResponseBodyStream(responseHeaders, majorVersion,
+                                        minorVersion, in, false);
         break;
       default:
         body = createResponseBodyStream(responseHeaders, majorVersion,
-                                        minorVersion, in);
+                                        minorVersion, in, true);
       }
 
     // Construct response
@@ -453,7 +456,8 @@ public class Request
   private InputStream createResponseBodyStream(Headers responseHeaders,
                                                int majorVersion,
                                                int minorVersion,
-                                               InputStream in)
+                                               InputStream in,
+                                               boolean mayHaveBody)
     throws IOException
   {
     long contentLength = -1;
@@ -466,7 +470,12 @@ public class Request
       (majorVersion == 1 && minorVersion == 0);
 
     String transferCoding = responseHeaders.getValue("Transfer-Encoding");
-    if ("chunked".equalsIgnoreCase(transferCoding))
+    if ("HEAD".equals(method) || !mayHaveBody)
+      {
+        // Special case no body.
+        in = new LimitedLengthInputStream(in, 0, true, connection, doClose);
+      }
+    else if ("chunked".equalsIgnoreCase(transferCoding))
       {
         in = new LimitedLengthInputStream(in, -1, false, connection, doClose);