Costin, Glad I can help out -- I think I see another problem, though. ll. 379-386 is still dealing with hBuf (which is bound to msg), and will therefore still overwrite the headers. I'm attaching a patch which I think fixes this (I don't have time to test/commit myself at this instant, and this is a pretty big gotcha): -Dan [EMAIL PROTECTED] wrote: > > costin 01/02/26 21:28:08 > > Modified: src/share/org/apache/tomcat/modules/server Ajp13.java > Log: > Fix the buffer problem ( need 2 input, one output - not 2 output on input). > > Thanks again Dan. > > Revision Changes Path > 1.16 +20 -17 >jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java > > Index: Ajp13.java > =================================================================== > RCS file: >/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java,v > retrieving revision 1.15 > retrieving revision 1.16 > diff -u -r1.15 -r1.16 > --- Ajp13.java 2001/02/27 03:02:47 1.15 > +++ Ajp13.java 2001/02/27 05:28:08 1.16 > @@ -180,11 +180,14 @@ > > OutputStream out; > InputStream in; > - > - Ajp13Packet outBuf = new Ajp13Packet( MAX_PACKET_SIZE ); > - Ajp13Packet inBuf = new Ajp13Packet( MAX_PACKET_SIZE ); > + > + // Buffer used of output body and headers > OutputBuffer headersWriter=new OutputBuffer(MAX_PACKET_SIZE); > - Ajp13Packet hBuf=new Ajp13Packet(headersWriter); > + Ajp13Packet outBuf = new Ajp13Packet( headersWriter ); > + // Buffer used for input body > + Ajp13Packet inBuf = new Ajp13Packet( MAX_PACKET_SIZE ); > + // Boffer used for request head ( and headers ) > + Ajp13Packet hBuf=new Ajp13Packet( MAX_PACKET_SIZE ); > > // Holds incoming reads of request body data (*not* header data) > byte []bodyBuff = new byte[MAX_READ_SIZE]; > @@ -230,16 +233,16 @@ > { > // XXX The return values are awful. > > - int err = receive(inBuf); > + int err = receive(hBuf); > if(err < 0) { > return 500; > } > > - int type = (int)inBuf.getByte(); > + int type = (int)hBuf.getByte(); > switch(type) { > > case JK_AJP13_FORWARD_REQUEST: > - return decodeRequest(req, inBuf); > + return decodeRequest(req, hBuf); > > case JK_AJP13_SHUTDOWN: > return -2; > @@ -495,28 +498,28 @@ > { > // XXX if more headers that MAX_SIZE, send 2 packets! > > - hBuf.reset(); > - hBuf.appendByte(JK_AJP13_SEND_HEADERS); > - hBuf.appendInt(status); > + outBuf.reset(); > + outBuf.appendByte(JK_AJP13_SEND_HEADERS); > + outBuf.appendInt(status); > > - hBuf.appendString(HttpMessages.getMessage( status )); > + outBuf.appendString(HttpMessages.getMessage( status )); > > int numHeaders = headers.size(); > - hBuf.appendInt(numHeaders); > + outBuf.appendInt(numHeaders); > > for( int i=0 ; i < numHeaders ; i++ ) { > String headerName = headers.getName(i).toString(); > int sc = headerNameToSc(headerName); > if(-1 != sc) { > - hBuf.appendInt(sc); > + outBuf.appendInt(sc); > } else { > - hBuf.appendString(headerName); > + outBuf.appendString(headerName); > } > - hBuf.appendString(headers.getValue(i).toString() ); > + outBuf.appendString(headers.getValue(i).toString() ); > } > > - hBuf.end(); > - send(hBuf); > + outBuf.end(); > + send(outBuf); > } > > /** > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, email: [EMAIL PROTECTED] -- Dan Milstein // [EMAIL PROTECTED]
Index: Ajp13.java =================================================================== RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java,v retrieving revision 1.16 diff -u -r1.16 Ajp13.java --- Ajp13.java 2001/02/27 05:28:08 1.16 +++ Ajp13.java 2001/02/27 22:38:37 @@ -376,14 +376,14 @@ if(contentLength > 0) { req.setContentLength( contentLength ); /* Read present data */ - int err = receive(msg); + int err = receive(inBuf); if(err < 0) { return 500; } - blen = msg.peekInt(); + blen = inBuf.peekInt(); pos = 0; - msg.getBytes(bodyBuff); + inBuf.getBytes(bodyBuff); } return 200; // Success
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]