docs: public int read(byte []read_buffer, int offset, int length) throws IOException {
         // Copy as much as possible from the read buffer 
         if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
             logger.logp(Level.FINE, CLASS_NAME,"read", "read length -->"+length);
         } 
         
         if ( total >= limit )
         {
             if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
                 logger.logp(Level.FINE, CLASS_NAME,"read", "Over the limit: -1");
             } 
             return -1;
         }
         
         int buf_len = count - pos;
         if (buf_len > 0) {
            if (buf_len >= length) {
               // Copy part of read buffer
               System.arraycopy(buf,pos,read_buffer,offset,length);
               pos += length;
  
               // begin 280584.2    java.io.IOException: SRVE0080E: Invalid content length    WAS.webcontainer    
               this.total += length;
               // end 280584.2    java.io.IOException: SRVE0080E: Invalid content length    WAS.webcontainer
  
               if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
                   logger.logp(Level.FINE, CLASS_NAME,"read", "read returning -->"+length);
               }
               return length;
            }
            // Copy all read buffer
            System.arraycopy(buf,pos,read_buffer,offset,buf_len);
            count = pos = 0;  // reset buffer
            offset += buf_len;
            length -= buf_len;
         }
         // Try to read remainder directly from the input stream into
         // the caller's buffer, avoiding an extra copy
         int bytes_read = buf_len;
  	   int rtn = 0;
  	   if(length>0)
  	   {
  			rtn = in.read(read_buffer,offset,length);
  	   }
  	   if (rtn > 0) {
  		  bytes_read += rtn;
  	   }
         // begin 280584.2    java.io.IOException: SRVE0080E: Invalid content length    WAS.webcontainer    
         this.total += bytes_read;
         // end 280584.2    java.io.IOException: SRVE0080E: Invalid content length    WAS.webcontainer    
  
  
         if (bytes_read == 0) {
             bytes_read = -1;
         }
         
         if (TraceComponent.isAnyTracingEnabled()&&logger.isLoggable (Level.FINE)) {  //306998.15
         		logger.logp(Level.FINE, CLASS_NAME,"read", "read returning -->"+bytes_read+", total="+total+",limit="+limit);
         }
         return bytes_read;
      }