[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] Re: [PATCH] Fix PR classpath/24086, PR classpath/24091, PR
From: |
Andrew Haley |
Subject: |
[cp-patches] Re: [PATCH] Fix PR classpath/24086, PR classpath/24091, PR classpath/24104 et al. ... |
Date: |
Fri, 20 Jan 2006 19:35:27 +0000 |
David Daney writes:
> @@ -438,30 +435,25 @@ public class Request
> String message = line.substring(end + 1, len - 1);
> // Read response headers
> Headers responseHeaders = new Headers();
> - responseHeaders.parse(in);
> + responseHeaders.parse(lis);
> notifyHeaderHandlers(responseHeaders);
> - // Construct response
> - int codeClass = code / 100;
> - Response ret = new Response(majorVersion, minorVersion, code,
> - codeClass, message, responseHeaders);
> + InputStream body = null;
> +
> switch (code)
> {
> + case 100:
> case 204:
> case 205:
> case 304:
> break;
> default:
> - // Does response body reader want body?
> - boolean notify = (responseBodyReader != null);
> - if (notify)
> - {
> - if (!responseBodyReader.accept(this, ret))
> - {
> - notify = false;
> - }
> - }
> - readResponseBody(ret, in, notify);
> + body = createResponseBodyStream(responseHeaders, majorVersion,
> + minorVersion, in);
> }
> +
> + // Construct response
> + Response ret = new Response(majorVersion, minorVersion, code,
> + message, responseHeaders, body);
> return ret;
> }
This change breaks HTTP redirects in gcj Version 4.1.
We send
"GET /bugzilla HTTP/1.1\r\nHost: gcc.gnu.org\r\nUser-Agent: ELinks/0.10.3
(textmode; Linux; -)\r\nAccept: */*\r\nAccept-Encoding:
gzip\r\nAccept-Language: en\r\nConnection: Keep-Alive\r\n\r\n"
If we get a response like
"HTTP/1.1 301 Moved Permanently\r\nDate: Fri, 20 Jan 2006 19:24:08
GMT\r\nContent-Length: 314\r\nContent-Type: text/html;
charset=iso-8859-1\r\nServer: Apache/2.0.52 (Red Hat)\r\nLocation:
http://gcc.gnu.org/bugzilla/\r\n\r\n<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML
2.0//EN">\n<html><head>\n<title>301 Moved
Permanently</title>\n</head><body>\n<h1>Moved Permanently</h1>\n<p>The document
has moved <a
href="http://gcc.gnu.org/bugzilla/">here</a>.</p>\n<hr>\n<address>Apache/2.0.52
(Red Hat) Server at gcc.gnu.org Port 80</address>\n</body></html>\n"
we read the first part, which is "HTTP/1.1 301 Moved Permanently\r".
Before redirecting we need to purge the rest of this response. The
previous code, which this patch removes, called readResponseBody() to
do this.
There is a full testcase for this at
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=178445
Andrew.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] Re: [PATCH] Fix PR classpath/24086, PR classpath/24091, PR classpath/24104 et al. ...,
Andrew Haley <=