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