From: André Malo Date: Mon, 28 Jul 2003 15:32:27 +0000 (+0000) Subject: allow piped rewrite logs to be relative to serverroot X-Git-Tag: pre_ajp_proxy~1342 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1518b867395de3cf3ce57c360675ce0cdc8b65e4;p=apache allow piped rewrite logs to be relative to serverroot git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100818 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 7e61555dc3..f7db007084 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.1.0-dev [Remove entries to the current 2.0 section below, when backported] + *) mod_rewrite: Allow piped rewrite logs to be relative to ServerRoot. + [André Malo] + *) mod_ssl: Fix segfaults after renegotiation failure. PR 21370 [Hartmut Keil ] diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 3ae2884151..7200c59753 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -385,8 +385,6 @@ static int open_rewritelog(server_rec *s, apr_pool_t *p) { rewrite_server_conf *conf; const char *fname; - apr_status_t rc; - piped_log *pl; conf = ap_get_module_config(s->module_config, &rewrite_module); @@ -399,15 +397,27 @@ static int open_rewritelog(server_rec *s, apr_pool_t *p) } if (*conf->rewritelogfile == '|') { - if ((pl = ap_open_piped_log(p, conf->rewritelogfile+1)) == NULL) { + piped_log *pl; + + fname = ap_server_root_relative(p, conf->rewritelogfile+1); + if (!fname) { + ap_log_error(APLOG_MARK, APLOG_ERR, APR_EBADPATH, s, + "mod_rewrite: Invalid RewriteLog " + "path %s", conf->rewritelogfile+1); + return 0; + } + + if ((pl = ap_open_piped_log(p, fname)) == NULL) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, s, "mod_rewrite: could not open reliable pipe " - "to RewriteLog filter %s", conf->rewritelogfile+1); + "to RewriteLog filter %s", fname); return 0; } conf->rewritelogfp = ap_piped_log_write_fd(pl); } else { + apr_status_t rc; + fname = ap_server_root_relative(p, conf->rewritelogfile); if (!fname) { ap_log_error(APLOG_MARK, APLOG_ERR, APR_EBADPATH, s, @@ -415,6 +425,7 @@ static int open_rewritelog(server_rec *s, apr_pool_t *p) "path %s", conf->rewritelogfile); return 0; } + if ((rc = apr_file_open(&conf->rewritelogfp, fname, REWRITELOG_FLAGS, REWRITELOG_MODE, p)) != APR_SUCCESS) {