remm 02/01/11 15:56:07 Modified: http11/src/java/org/apache/coyote/http11/filters IdentityOutputFilter.java Log: - Fix incorrect handling of the number of bytes remaining on output. Revision Changes Path 1.4 +8 -11 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java Index: IdentityOutputFilter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/IdentityOutputFilter.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- IdentityOutputFilter.java 4 Dec 2001 06:33:07 -0000 1.3 +++ IdentityOutputFilter.java 11 Jan 2002 23:56:07 -0000 1.4 @@ -102,7 +102,7 @@ /** * Remaining bytes. */ - protected long remaining = -1; + protected long remaining = 0; /** @@ -141,25 +141,23 @@ public int doWrite(ByteChunk chunk) throws IOException { - int result = chunk.getLength(); - - if (result <= 0) { - return -1; - } + int result = 0; if (contentLength > 0) { if (remaining > 0) { - if (chunk.getLength() > remaining) { + result = chunk.getLength(); + if (result > remaining) { // The chunk is longer than the number of bytes remaining // in the body; changing the chunk length to the number // of bytes remaining chunk.setBytes(chunk.getBytes(), chunk.getStart(), (int) remaining); result = (int) remaining; - remaining = -1; + remaining = 0; } else { remaining = remaining - result; } + buffer.doWrite(chunk); } else { // No more bytes left to be written : return -1 and clear the // buffer @@ -168,8 +166,6 @@ } } - buffer.doWrite(chunk); - return result; } @@ -185,6 +181,7 @@ */ public void setResponse(Response response) { contentLength = response.getContentLength(); + remaining = contentLength; } @@ -215,7 +212,7 @@ */ public void recycle() { contentLength = -1; - remaining = -1; + remaining = 0; }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>