summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Daney <ddaney@avtrex.com>2006-08-11 20:51:19 +0000
committerDavid Daney <ddaney@avtrex.com>2006-08-11 20:51:19 +0000
commit68f39ab845193c9d7debde3c864439392e5b4d6a (patch)
treea552a869327bbf32c26f4e7c25ed79033b814236
parentb52a100a011a977b732dc03c8c3aabef1b7f7447 (diff)
downloadclasspath-68f39ab845193c9d7debde3c864439392e5b4d6a.tar.gz
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.
-rw-r--r--ChangeLog8
-rw-r--r--gnu/java/net/protocol/http/Request.java15
2 files changed, 20 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 8f202c060..04a9ad3bd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-08-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-08-11 Roman Kennke <kennke@aicas.com>
* javax/swing/text/GlyphView.java
diff --git a/gnu/java/net/protocol/http/Request.java b/gnu/java/net/protocol/http/Request.java
index e15ec4182..cd9d7ea44 100644
--- a/gnu/java/net/protocol/http/Request.java
+++ b/gnu/java/net/protocol/http/Request.java
@@ -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);