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]