Index: HttpMethodBase.java =================================================================== RCS file: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/HttpMethodBase.java,v retrieving revision 1.160 diff -u -r1.160 HttpMethodBase.java --- HttpMethodBase.java 5 Jul 2003 18:30:27 -0000 1.160 +++ HttpMethodBase.java 7 Jul 2003 22:52:16 -0000 @@ -2013,16 +2013,23 @@ LOG.trace("enter HttpMethodBase.readResponseBody(HttpState, HttpConnection)"); responseBody = null; // is this desired? - Header transferEncodingHeader = getResponseHeader("Transfer-Encoding"); InputStream is = conn.getResponseInputStream(); if (Wire.enabled()) { is = new WireLogInputStream(is); } InputStream result = null; + Header[] transferEncodingHeaders = responseHeaders.getHeaders("Transfer-Encoding"); // We use Transfer-Encoding if present and ignore Content-Length. // RFC2616, 4.4 item number 3 - if (transferEncodingHeader != null) { - if ("chunked".equalsIgnoreCase(transferEncodingHeader.getValue())) { + if (transferEncodingHeaders.length > 0) { + boolean containsChunked = false; + for (int i = 0; i < transferEncodingHeaders.length; i++) { + if ("chunked".equalsIgnoreCase(transferEncodingHeaders[i].getValue())) { + containsChunked = true; + break; + } + } + if (containsChunked) { // Some HTTP servers do not bother sending a closing chunk // if response body is empty if (conn.isResponseAvailable(conn.getSoTimeout())) { @@ -2034,6 +2041,14 @@ LOG.warn("Chunk-encoded body missing"); } } + } else { + if (isStrictMode() && LOG.isWarnEnabled()) { + LOG.warn("Transfer-Encoding is set but does not contain \"chunked\": " + + getResponseHeader("Transfer-Encoding")); + } + // we assume that the response connection will be terminated by closing + // the socket as per RFC 2616, 3.6 + result = is; } } else { int expectedLength = getResponseContentLength();