i didn't see any comments in commit messages that mentioned the problem
you are speaking of.  can you find that comment again and send it? 
thanks.

DAK wrote:
> 
> Here's my first submission! It pertains to Tomcat-3.2.1 and looks to be
> the same in 3.2.2.b4
> 
> I have some client code that sends a jar file to the servlet. The jar
> file was getting corrupted. After much digging, I found a CVS commit to
> Ajp13ConnectorRequest.java that mentioned a problem like this with the
> doRead() method. It turns out the the same applies to the doRead(byte[],
> int, int) method. The same problem exists in the Ajp12ConnectionHandler
> for that byte array read. Single byte reads for both protocols work just
> fine. I'm including the diffs for these classes to show what I'm talking
> about. I may be called a developer now, but I'm certainly not a
> commiter, so what is the procedure for getting this fix validated by
> somebody else and put into the codebase?
> 
> Index: Ajp13ConnectorRequest.java
> ===================================================================
> RCS file:
> 
>/home/cvspublic/jakarta-tomcat/src/share/org/apache/tomcat/service/connector/Attic/Ajp13ConnectorRequest.java,v
> retrieving revision 1.5.2.7
> diff -r1.5.2.7 Ajp13ConnectorRequest.java
> 274c274,277
> <           System.arraycopy(bodyBuff, pos, b, off, c);
> ---
>  >           //System.arraycopy(bodyBuff, pos, b, off, c);
>  >           for (int i=pos, j=off, d=c; d > 0; i++, j++, d--) {
>  >               b[j] = (byte)(((char)bodyBuff[i])&0xff);
>  >           }
> 
> What I've done here is to replace the array copy with a loop that does
> the appropriate data conversion.
> 
> Index: Ajp12ConnectionHandler.java
> ===================================================================
> RCS file:
> 
>/home/cvspublic/jakarta-tomcat/src/share/org/apache/tomcat/service/connector/Attic/Ajp12ConnectionHandler.java,v
> retrieving revision 1.28.2.4
> diff -r1.28.2.4 Ajp12ConnectionHandler.java
> 542a543,549
>  >     public  int read(byte b[], int off, int len) throws IOException {
>  >       int ret = super.read(b, off, len);
>  >       for (int i=0, j=off; i<len; i++, j++) {
>  >           b[j] = (byte)(((char)b[j])&0xff);
>  >       }
>  >       return ret;
>  >     }
> 
> In this case, I over-rode the read method to convert the data after
> calling the super.read
> 
> I'd like to see this stuff end up in 3.2.2.b5
> 
>    Thanks,
>        David Kavanagh

Reply via email to