Author: remy.maucherat(a)jboss.com
Date: 2008-03-05 10:44:28 -0500 (Wed, 05 Mar 2008)
New Revision: 470
Modified:
trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
Log:
- Fix two bugs: data corruption (not putting the right data in the leftover chunk), and
forgetting
to empty the buffer after writing leftover data.
Modified: trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java
===================================================================
--- trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java 2008-03-05 13:24:35
UTC (rev 469)
+++ trunk/java/org/apache/coyote/http11/InternalAprOutputBuffer.java 2008-03-05 15:44:28
UTC (rev 470)
@@ -743,10 +743,10 @@
}
System.out.println("Flushed leftover " + res);
response.setLastWrite(res);
+ bbuf.clear();
if (pos < end) {
// Could not write all leftover data: put back to write poller
leftover.setOffset(start + pos);
- bbuf.clear();
return false;
}
}
@@ -849,8 +849,8 @@
} else {
// Put any leftover bytes in the leftover byte chunk
leftover.allocate(end - pos, -1);
- bbuf.position(0);
- bbuf.limit(end - pos);
+ bbuf.position(pos);
+ bbuf.limit(end);
bbuf.get(leftover.getBuffer(), 0, end - pos);
leftover.setEnd(end - pos);
System.out.println("Put " + (end-pos) + " bytes in
leftover: " + new String(leftover.getBuffer(), 0, end - pos) + " l:" +
leftover.getBuffer().length);
@@ -896,7 +896,7 @@
// part of the same write operation)
if (leftover.getLength() > 0) {
leftover.append(chunk);
- System.out.println("Add chunk to leftover");
+ System.out.println("Add chunk to leftover: " +
chunk.getLength());
return chunk.getLength();
}
Show replies by date