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]>

Reply via email to