Commit 5a4ba983 by David Daney Committed by David Daney

re PR classpath/28580 (HTTP HEAD fails on chuncked encoding)

       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
parent d2952008
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> 2006-09-05 Gary Benson <gbenson@redhat.com>
* java/net/SocketPermission.java * java/net/SocketPermission.java
......
...@@ -419,13 +419,16 @@ public class Request ...@@ -419,13 +419,16 @@ public class Request
switch (code) switch (code)
{ {
case 100: case 100:
break;
case 204: case 204:
case 205: case 205:
case 304: case 304:
body = createResponseBodyStream(responseHeaders, majorVersion,
minorVersion, in, false);
break; break;
default: default:
body = createResponseBodyStream(responseHeaders, majorVersion, body = createResponseBodyStream(responseHeaders, majorVersion,
minorVersion, in); minorVersion, in, true);
} }
// Construct response // Construct response
...@@ -453,7 +456,8 @@ public class Request ...@@ -453,7 +456,8 @@ public class Request
private InputStream createResponseBodyStream(Headers responseHeaders, private InputStream createResponseBodyStream(Headers responseHeaders,
int majorVersion, int majorVersion,
int minorVersion, int minorVersion,
InputStream in) InputStream in,
boolean mayHaveBody)
throws IOException throws IOException
{ {
long contentLength = -1; long contentLength = -1;
...@@ -466,7 +470,12 @@ public class Request ...@@ -466,7 +470,12 @@ public class Request
(majorVersion == 1 && minorVersion == 0); (majorVersion == 1 && minorVersion == 0);
String transferCoding = responseHeaders.getValue("Transfer-Encoding"); 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); in = new LimitedLengthInputStream(in, -1, false, connection, doClose);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment