From 65d3fe4fb7d9d580bcc93090aa5aaa822f48cbf7 Mon Sep 17 00:00:00 2001 From: "Paul J. Reder" Date: Tue, 30 Sep 2003 17:41:58 +0000 Subject: [PATCH] *) mod_rewrite: Fix mod_rewrite's support of the [P] option to send rewritten request using "proxy:". The code was adding multiple "proxy:" fields in the rewritten URI. PR: 13946. [Eider Oliveira ] Reviewed by: Paul J. Reder, Andre Malo, Jeff Trawick, and Roy T. Fielding. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@101358 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ STATUS | 11 +--------- modules/mappers/mod_rewrite.c | 38 +++++++++++++++++++++++++---------- 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/CHANGES b/CHANGES index 6fbf68ed836..024c91cfa7b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,9 @@ Changes with Apache 2.0.48 + *) mod_rewrite: Fix mod_rewrite's support of the [P] option to send + rewritten request using "proxy:". The code was adding multiple "proxy:" + fields in the rewritten URI. PR: 13946. [Eider Oliveira ] + *) cache_util: Fix ap_check_cache_freshness to check max_age, smax_age, and expires as directed in RFC 2616. [Thomas Castelle tcastelle@generali.fr] diff --git a/STATUS b/STATUS index db42873e972..bd2d115687d 100644 --- a/STATUS +++ b/STATUS @@ -1,5 +1,5 @@ APACHE 2.0 STATUS: -*-text-*- -Last modified at [$Date: 2003/09/29 21:09:46 $] +Last modified at [$Date: 2003/09/30 17:41:58 $] Release: @@ -78,15 +78,6 @@ PATCHES TO PORT FROM 2.1 http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/experimental/mod_mem_cache.c.diff?r1=1.93&r2=1.94 +1: rederpj, fielding, trawick - * mod_rewrite.c: Fix mod_rewrite's support of the [P] option to send - rewritten request using "proxy:". The code was adding multiple "proxy:" - fields in the rewritten URI. PR: 13946. - http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/mappers/mod_rewrite.c.diff?r1=1.153&r2=1.154 - http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/mappers/mod_rewrite.c.diff?r1=1.154&r2=1.155 - http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/mappers/mod_rewrite.c.diff?r1=1.156&r2=1.157 - http://cvs.apache.org/viewcvs.cgi/httpd-2.0/modules/mappers/mod_rewrite.c.diff?r1=1.173&r2=1.174 - +1: rederpj, nd, trawick, fielding - * Replace some of the mutex locking in the worker MPM with atomic operations for higher concurrency. server/mpm/worker/fdqueue.c 1.24, 1.25 diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index ec73642f1fd..63d17632b6e 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -1107,6 +1107,7 @@ static void init_child(apr_pool_t *p, server_rec *s) static int hook_uri2file(request_rec *r) { rewrite_server_conf *conf; + const char *saved_rulestatus; const char *var; const char *thisserver; char *thisport; @@ -1185,19 +1186,34 @@ static int hook_uri2file(request_rec *r) thisurl, NULL); apr_table_setn(r->subprocess_env, ENVVAR_SCRIPT_URI, var); - /* if filename was not initially set, - * we start with the requested URI - */ - if (r->filename == NULL) { - r->filename = apr_pstrdup(r->pool, r->uri); - rewritelog(r, 2, "init rewrite engine with requested uri %s", - r->filename); + if (!(saved_rulestatus = apr_table_get(r->notes,"mod_rewrite_rewritten"))) { + /* if filename was not initially set, + * we start with the requested URI + */ + if (r->filename == NULL) { + r->filename = apr_pstrdup(r->pool, r->uri); + rewritelog(r, 2, "init rewrite engine with requested uri %s", + r->filename); + } + else { + rewritelog(r, 2, "init rewrite engine with passed filename %s." + " Original uri = %s", r->filename, r->uri); + } + + /* + * now apply the rules ... + */ + rulestatus = apply_rewrite_list(r, conf->rewriterules, NULL); + apr_table_set(r->notes,"mod_rewrite_rewritten", + apr_psprintf(r->pool,"%d",rulestatus)); + } + else { + rewritelog(r, 2, + "uri already rewritten. Status %s, Uri %s, r->filename %s", + saved_rulestatus, r->uri, r->filename); + rulestatus = atoi(saved_rulestatus); } - /* - * now apply the rules ... - */ - rulestatus = apply_rewrite_list(r, conf->rewriterules, NULL); if (rulestatus) { unsigned skip; -- 2.47.2