You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/09/10 10:16:42 UTC

svn commit: r1840451 - /tomcat/jk/trunk/native/apache-2.0/mod_jk.c

Author: markt
Date: Mon Sep 10 10:16:42 2018
New Revision: 1840451

URL: http://svn.apache.org/viewvc?rev=1840451&view=rev
Log:
Let the webserver know about normalized URLs used for worker mapping but use the original URL when doing the final forwarding.

Modified:
    tomcat/jk/trunk/native/apache-2.0/mod_jk.c

Modified: tomcat/jk/trunk/native/apache-2.0/mod_jk.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/apache-2.0/mod_jk.c?rev=1840451&r1=1840450&r2=1840451&view=diff
==============================================================================
--- tomcat/jk/trunk/native/apache-2.0/mod_jk.c (original)
+++ tomcat/jk/trunk/native/apache-2.0/mod_jk.c Mon Sep 10 10:16:42 2018
@@ -252,6 +252,7 @@ typedef struct
 struct jk_request_conf
 {
     rule_extension_t *rule_extensions;
+    char *orig_uri;
     int jk_handled;
 };
 
@@ -798,6 +799,7 @@ static int init_ws_service(apache_privat
     int size;
     request_rec *r = private_data->r;
     char *ssl_temp = NULL;
+    char *uri = NULL;
     const char *reply_timeout = NULL;
     const char *sticky_ignore = NULL;
     const char *stateless = NULL;
@@ -988,6 +990,8 @@ static int init_ws_service(apache_privat
      * uri is use for compatibility with mod_rewrite with old Tomcats
      */
 
+    uri = rconf->orig_uri ? rconf->orig_uri : r->uri;
+
     switch (conf->options & JK_OPT_FWDURIMASK) {
 
     case JK_OPT_FWDURICOMPATUNPARSED:
@@ -1002,17 +1006,17 @@ static int init_ws_service(apache_privat
         break;
 
     case JK_OPT_FWDURICOMPAT:
-        s->req_uri = r->uri;
+        s->req_uri = uri;
         break;
 
     case JK_OPT_FWDURIPROXY:
-        size = 3 * (int)strlen(r->uri) + 1;
+        size = 3 * (int)strlen(uri) + 1;
         s->req_uri = apr_palloc(r->pool, size);
-        jk_canonenc(r->uri, s->req_uri, size);
+        jk_canonenc(uri, s->req_uri, size);
         break;
 
     case JK_OPT_FWDURIESCAPED:
-        s->req_uri = ap_escape_uri(r->pool, r->uri);
+        s->req_uri = ap_escape_uri(r->pool, uri);
         break;
 
     default:
@@ -2734,6 +2738,7 @@ static int jk_handler(request_rec * r)
         rconf = apr_palloc(r->pool, sizeof(jk_request_conf_t));
         rconf->jk_handled = JK_FALSE;
         rconf->rule_extensions = NULL;
+        rconf->orig_uri = NULL;
         ap_set_module_config(r->request_config, &jk_module, rconf);
     }
 
@@ -2795,6 +2800,8 @@ static int jk_handler(request_rec * r)
                                                     NULL, &e, NULL, xconf->log);
                 if (worker_name) {
                     rconf->rule_extensions = e;
+                    rconf->orig_uri = r->uri;
+                    r->uri = clean_uri;
                 }
             }
 
@@ -3767,6 +3774,7 @@ static int jk_translate(request_rec * r)
     jk_request_conf_t *rconf = apr_palloc(r->pool, sizeof(jk_request_conf_t));
     rconf->jk_handled = JK_FALSE;
     rconf->rule_extensions = NULL;
+    rconf->orig_uri = NULL;
     ap_set_module_config(r->request_config, &jk_module, rconf);
 
     if (!r->proxyreq) {
@@ -3851,6 +3859,8 @@ static int jk_translate(request_rec * r)
                                                NULL, &e, NULL, conf->log);
                 if (worker) {
                     rconf->rule_extensions = e;
+                    rconf->orig_uri = r->uri;
+                    r->uri = clean_uri;
                 }
             }
 
@@ -3975,6 +3985,7 @@ static int jk_map_to_storage(request_rec
         rconf = apr_palloc(r->pool, sizeof(jk_request_conf_t));
         rconf->jk_handled = JK_FALSE;
         rconf->rule_extensions = NULL;
+        rconf->orig_uri = NULL;
         ap_set_module_config(r->request_config, &jk_module, rconf);
     }
 
@@ -4028,6 +4039,8 @@ static int jk_map_to_storage(request_rec
                                                NULL, &e, NULL, conf->log);
                 if (worker) {
                     rconf->rule_extensions = e;
+                    rconf->orig_uri = r->uri;
+                    r->uri = clean_uri;
                 }
             }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org