From aa2cf4597dd270d47ba96023f23fcfb6172e8e6b Mon Sep 17 00:00:00 2001 From: Jim Jagielski Date: Thu, 17 Apr 2008 19:20:16 +0000 Subject: [PATCH] handle ? in cases where nocanon is in effect git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@649239 13f79535-47bb-0310-9956-ffa450edef68 --- modules/proxy/mod_proxy_ajp.c | 6 ++++-- modules/proxy/mod_proxy_http.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/modules/proxy/mod_proxy_ajp.c b/modules/proxy/mod_proxy_ajp.c index 7213660d0f..16329e2523 100644 --- a/modules/proxy/mod_proxy_ajp.c +++ b/modules/proxy/mod_proxy_ajp.c @@ -31,6 +31,7 @@ static int proxy_ajp_canon(request_rec *r, char *url) { char *host, *path, *search, sport[7]; const char *err; + const char *pnocanon; apr_port_t port = AJP13_DEF_PORT; /* ap_port_of_scheme() */ @@ -63,7 +64,8 @@ static int proxy_ajp_canon(request_rec *r, char *url) * has already been decoded. True proxy requests have * r->uri == r->unparsed_uri, and no others have that property. */ - if (r->uri == r->unparsed_uri) { + pnocanon = apr_table_get(r->notes, "proxy-nocanon"); + if ((r->uri == r->unparsed_uri) || pnocanon) { search = strchr(url, '?'); if (search != NULL) *(search++) = '\0'; @@ -72,7 +74,7 @@ static int proxy_ajp_canon(request_rec *r, char *url) search = r->args; /* process path */ - if (apr_table_get(r->notes, "proxy-nocanon")) { + if (pnocanon) { path = url; /* this is the raw path */ } else { diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c index 0d21358fdb..89d893c571 100644 --- a/modules/proxy/mod_proxy_http.c +++ b/modules/proxy/mod_proxy_http.c @@ -36,6 +36,7 @@ static int proxy_http_canon(request_rec *r, char *url) char *host, *path, *search, sport[7]; const char *err; const char *scheme; + const char *pnocanon; apr_port_t port, def_port; /* ap_port_of_scheme() */ @@ -72,7 +73,9 @@ static int proxy_http_canon(request_rec *r, char *url) * has already been decoded. True proxy requests have r->uri * == r->unparsed_uri, and no others have that property. */ - if (r->uri == r->unparsed_uri) { + pnocanon = apr_table_get(r->notes, "proxy-nocanon"); + if ((r->uri == r->unparsed_uri) || + ((r->proxyreq == PROXYREQ_REVERSE) && pnocanon)) { search = strchr(url, '?'); if (search != NULL) *(search++) = '\0'; @@ -88,7 +91,7 @@ static int proxy_http_canon(request_rec *r, char *url) switch (r->proxyreq) { default: /* wtf are we doing here? */ case PROXYREQ_REVERSE: - if (apr_table_get(r->notes, "proxy-nocanon")) { + if (pnocanon) { path = url; /* this is the raw path */ } else { -- 2.40.0