keith 2004/06/15 13:37:11 Modified: jk/native2/common jk_requtil.c jk/java/org/apache/ajp RequestHandler.java jk/xdocs/common AJPv13.xml jk/native2/include jk_service.h jk/java/org/apache/jk/common HandlerRequest.java Log: Previously the transport would fail for unrecognizned methods; this
changes mod_jk2 to send the full method string if the method is unrecognized. Revision Changes Path 1.33 +12 -2 jakarta-tomcat-connectors/jk/native2/common/jk_requtil.c Index: jk_requtil.c =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/common/jk_requtil.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -r1.32 -r1.33 --- jk_requtil.c 21 Mar 2004 09:43:09 -0000 1.32 +++ jk_requtil.c 15 Jun 2004 20:37:10 -0000 1.33 @@ -67,6 +67,7 @@ /* only in if JkOptions +ForwardKeySize */ #define SC_A_SSL_KEY_SIZE (unsigned char)11 #define SC_A_SECRET (unsigned char)12 +#define SC_A_STORED_METHOD (unsigned char)13 #define SC_A_ARE_DONE (unsigned char)0xFF /* @@ -189,7 +190,7 @@ *sc = SC_M_MKACTIVITY; } else { - rc = JK_ERR; + *sc = SC_M_JK_STORED; } return rc; @@ -551,7 +552,7 @@ rc = jk2_requtil_getMethodId(env, s->method, &method); if (rc != JK_OK) { env->l->jkLog(env, env->l, JK_LOG_ERROR, - "Error ajp_marshal_into_msgb - No such method %s\n", + "Error ajp_marshal_into_msgb - method %s\n", s->method); return JK_ERR; } @@ -697,6 +698,15 @@ } } + /* If the method was unrecognized, encode it as an attribute */ + if (method == SC_M_JK_STORED) { + if (msg->appendByte(env, msg, SC_A_STORED_METHOD) || + msg->appendString(env, msg, s->method)) { + env->l->jkLog(env, env->l, JK_LOG_ERROR, + "handle.request() Error encoding method %s\n", + s->method); + } + } if (s->attributes->size(env, s->attributes) > 0) { for (i = 0; i < s->attributes->size(env, s->attributes); i++) { 1.21 +10 -1 jakarta-tomcat-connectors/jk/java/org/apache/ajp/RequestHandler.java Index: RequestHandler.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/ajp/RequestHandler.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- RequestHandler.java 24 Feb 2004 08:48:43 -0000 1.20 +++ RequestHandler.java 15 Jun 2004 20:37:10 -0000 1.21 @@ -90,6 +90,7 @@ public static final byte SC_A_SSL_SESSION = 9; public static final byte SC_A_SSL_KEY_SIZE = 11; // ajp14 originally, now in ajp13 with jk 1.2/2.0 public static final byte SC_A_SECRET = 12; + public static final byte SC_A_STORED_METHOD = 13; // Used for attributes which are not in the list above public static final byte SC_A_REQ_ATTRIBUTE = 10; @@ -127,6 +128,8 @@ "BASELINE-CONTROL", "MKACTIVITY" }; + public static final int SC_M_JK_STORED = (byte) 0xFF; + // id's for common request headers public static final int SC_REQ_ACCEPT = 1; @@ -254,7 +257,8 @@ // Translate the HTTP method code to a String. byte methodCode = msg.getByte(); - req.method().setString(methodTransArray[(int)methodCode - 1]); + if (methodCode != SC_M_JK_STORED) + req.method().setString(methodTransArray[(int)methodCode - 1]); msg.getMessageBytes(req.protocol()); msg.getMessageBytes(req.requestURI()); @@ -402,6 +406,11 @@ req.setAttribute("javax.servlet.request.key_size", Integer.toString(msg.getInt())); break; + + case SC_A_STORED_METHOD: + req.method().setString(msg.getString()); + break; + default: // Ignore. Assume a single-string value - we shouldn't // allow anything else. 1.9 +5 -1 jakarta-tomcat-connectors/jk/xdocs/common/AJPv13.xml Index: AJPv13.xml =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/common/AJPv13.xml,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- AJPv13.xml 4 Mar 2004 04:46:34 -0000 1.8 +++ AJPv13.xml 15 Jun 2004 20:37:10 -0000 1.9 @@ -418,6 +418,10 @@ </table> </p> +<p>Later version of ajp13, when used with mod_jk2, will transport +additional methods, even if they are not in this list. +</p> + </subsection> <subsection name="protocol, req_uri, remote_addr, remote_host, server_name, server_port, is_ssl"> 1.25 +2 -1 jakarta-tomcat-connectors/jk/native2/include/jk_service.h Index: jk_service.h =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native2/include/jk_service.h,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- jk_service.h 21 Mar 2004 09:39:57 -0000 1.24 +++ jk_service.h 15 Jun 2004 20:37:11 -0000 1.25 @@ -83,6 +83,7 @@ #define SC_M_MERGE (unsigned char)25 #define SC_M_BASELINE_CONTROL (unsigned char)26 #define SC_M_MKACTIVITY (unsigned char)27 +#define SC_M_JK_STORED (unsigned char)0xFF /* 1.38 +11 -3 jakarta-tomcat-connectors/jk/java/org/apache/jk/common/HandlerRequest.java Index: HandlerRequest.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/jk/java/org/apache/jk/common/HandlerRequest.java,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- HandlerRequest.java 5 Jun 2004 05:19:04 -0000 1.37 +++ HandlerRequest.java 15 Jun 2004 20:37:11 -0000 1.38 @@ -108,6 +108,7 @@ public static final byte SC_A_SSL_SESSION = 9; public static final byte SC_A_SSL_KEYSIZE = 11; public static final byte SC_A_SECRET = 12; + public static final byte SC_A_STORED_METHOD = 13; // Used for attributes which are not in the list above public static final byte SC_A_REQ_ATTRIBUTE = 10; @@ -145,6 +146,7 @@ "BASELINE-CONTROL", "MKACTIVITY" }; + public static final int SC_M_JK_STORED = (byte) 0xFF; // id's for common request headers public static final int SC_REQ_ACCEPT = 1; @@ -461,9 +463,10 @@ // Translate the HTTP method code to a String. byte methodCode = msg.getByte(); - String mName=methodTransArray[(int)methodCode - 1]; - - req.method().setString(mName); + if (methodCode != SC_M_JK_STORED) { + String mName=methodTransArray[(int)methodCode - 1]; + req.method().setString(mName); + } msg.getBytes(req.protocol()); msg.getBytes(req.requestURI()); @@ -603,6 +606,11 @@ // endpoint note ep.setNote( secretNote, secret ); break; + + case SC_A_STORED_METHOD: + msg.getBytes(req.method()); + break; + default: break; // ignore, we don't know about it - backward compat } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]