The 2.2 servlet spec errata says the uri from
HttpServletRequest.getRequestURI() should remain encoded.
[http://java.sun.com/products/servlet/errata_042700.html]

Tomcat 3.2 standalone handles this correctly, but the
mod_jk connector does not.

The connector uses the decoded uri from Apache (r->uri).
I believe the correct value to return is the raw, encoded
url (r->unparsed_uri), stripped of the query string, per
the servlet javadoc.
[http://java.sun.com/products/servlet/2.2/javadoc/javax/servlet/http/HttpSer
vletRequest.html#getRequestURI()]

Of course I will defer to the RM's judgement, but I'd like
to commit the following patch to the 3.2 branch prior to
next Friday:

===================================================================
RCS file: /home/cvs/jakarta-tomcat/src/native/apache1.3/Attic/mod_jk.c,v
retrieving revision 1.7.2.3
diff -u -r1.7.2.3 mod_jk.c
--- mod_jk.c    2001/02/17 05:24:00     1.7.2.3
+++ mod_jk.c    2001/05/18 21:05:16
@@ -358,7 +358,13 @@
     s->method       = (char *)r->method;
     s->content_length = get_content_length(r);
     s->query_string = r->args;
-    s->req_uri      = r->uri;
+    s->req_uri      = r->unparsed_uri;
+    if (s->req_uri != NULL) {
+       char *query_str = strchr(s->req_uri, '?');
+       if (query_str != NULL) {
+           *query_str = 0;
+       }
+    }

     s->is_ssl       = JK_FALSE;
     s->ssl_cert     = NULL;

Ditto for /home/cvs/jakarta-tomcat/src/native/apache2.0/Attic/mod_jk.c

Comments?

Keith

Reply via email to