remm 02/01/10 04:53:50 Modified: http11/src/java/org/apache/coyote/http11 Http11Connector.java InternalInputBuffer.java InternalOutputBuffer.java http11/src/java/org/apache/coyote/http11/filters IdentityInputFilter.java Log: - Fix some obvious content delimitation problems. - Implement content delimitation for identity transfer encoding. Revision Changes Path 1.9 +10 -0 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Connector.java Index: Http11Connector.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Connector.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Http11Connector.java 9 Jan 2002 23:29:29 -0000 1.8 +++ Http11Connector.java 10 Jan 2002 12:53:50 -0000 1.9 @@ -295,6 +295,16 @@ // Finish the handling of the request try { + inputBuffer.endRequest(); + } catch (IOException e) { + e.printStackTrace(); + error = true; + } catch (Throwable t) { + // Problem ... + t.printStackTrace(); + error = true; + } + try { outputBuffer.endRequest(); } catch (IOException e) { e.printStackTrace(); 1.8 +12 -7 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalInputBuffer.java Index: InternalInputBuffer.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalInputBuffer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- InternalInputBuffer.java 9 Jan 2002 12:57:49 -0000 1.7 +++ InternalInputBuffer.java 10 Jan 2002 12:53:50 -0000 1.8 @@ -1,7 +1,7 @@ /* - * $Header: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalInputBuffer.java,v 1.7 2002/01/09 12:57:49 remm Exp $ - * $Revision: 1.7 $ - * $Date: 2002/01/09 12:57:49 $ + * $Header: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalInputBuffer.java,v 1.8 2002/01/10 12:53:50 remm Exp $ + * $Revision: 1.8 $ + * $Date: 2002/01/10 12:53:50 $ * * ==================================================================== * @@ -303,6 +303,8 @@ activeFilters[++lastActiveFilter] = filter; + filter.setRequest(request); + } @@ -376,8 +378,9 @@ public void endRequest() throws IOException { - for (int i = 0; i <= lastActiveFilter; i++) { - pos -= activeFilters[i].end(); + if (lastActiveFilter != -1) { + int extraBytes = (int) activeFilters[lastActiveFilter].end(); + pos = pos - extraBytes; } } @@ -761,9 +764,11 @@ return -1; } - chunk.setBytes(buf, pos, lastValid - pos); + int length = lastValid - pos; + chunk.setBytes(buf, pos, length); + pos = lastValid; - return (lastValid - pos); + return (length); } 1.8 +2 -0 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalOutputBuffer.java Index: InternalOutputBuffer.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/InternalOutputBuffer.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- InternalOutputBuffer.java 9 Jan 2002 12:57:49 -0000 1.7 +++ InternalOutputBuffer.java 10 Jan 2002 12:53:50 -0000 1.8 @@ -278,6 +278,8 @@ activeFilters[++lastActiveFilter] = filter; + filter.setResponse(response); + } 1.6 +17 -6 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java Index: IdentityInputFilter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/IdentityInputFilter.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- IdentityInputFilter.java 9 Dec 2001 22:10:47 -0000 1.5 +++ IdentityInputFilter.java 10 Jan 2002 12:53:50 -0000 1.6 @@ -102,7 +102,7 @@ /** * Remaining bytes. */ - protected long remaining = -1; + protected long remaining = 0; /** @@ -111,6 +111,12 @@ protected InputBuffer buffer; + /** + * Chunk used to read leftover bytes. + */ + protected ByteChunk endChunk = new ByteChunk(); + + // ------------------------------------------------------------- Properties @@ -163,7 +169,7 @@ (int) remaining); result = (int) remaining; } - remaining = remaining - result; + remaining = remaining - chunk.getLength(); } else { // No more bytes left to be read : return -1 and clear the // buffer @@ -195,9 +201,13 @@ public long end() throws IOException { - // FIXME: Consume extra bytes. - // FIXME: If too many bytes were read, return the amount. - return 0; + // Consume extra bytes. + while (remaining > 0) { + remaining = remaining - buffer.doRead(endChunk); + } + + // If too many bytes were read, return the amount. + return -remaining; } @@ -215,7 +225,8 @@ */ public void recycle() { contentLength = -1; - remaining = -1; + remaining = 0; + endChunk.recycle(); }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>