costin      01/09/22 15:05:31

  Modified:    src/share/org/apache/tomcat/modules/server
                        Http10Interceptor.java
  Log:
  Fix for 3745 - thanks Stefan Eissing for finding the bug.
  
  doRead() should return -1 on end of stream, and available should be used
  only if is known ( -1 means unknown length, read until EOF ).
  
  Revision  Changes    Path
  1.25      +14 -5     
jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Http10Interceptor.java
  
  Index: Http10Interceptor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Http10Interceptor.java,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- Http10Interceptor.java    2001/09/21 08:29:56     1.24
  +++ Http10Interceptor.java    2001/09/22 22:05:31     1.25
  @@ -232,17 +232,26 @@
       }
   
       public int doRead() throws IOException {
  -     if( available <= 0 )
  +     if( available == 0 ) 
            return -1;
  -     available--;
  +     // #3745
  +     // if available == -1: unknown length, we'll read until end of stream.
  +     if( available!= -1 )
  +         available--;
        return http.doRead();
       }
   
       public int doRead(byte[] b, int off, int len) throws IOException {
  -     if( available <= 0 )
  -         return 0;
  +     if( available == 0 )
  +         return -1;
  +     // if available == -1: unknown length, we'll read until end of stream.
        int rd=http.doRead( b, off, len );
  -     available -= rd;
  +     if( rd==-1) {
  +         available=0;
  +         return -1;
  +     }
  +     if( available!= -1 )
  +         available -= rd;
        return rd;
       }
       
  
  
  

Reply via email to