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