]> granicus.if.org Git - apache/commitdiff
allow piped rewrite logs to be relative to serverroot
authorAndré Malo <nd@apache.org>
Mon, 28 Jul 2003 15:32:27 +0000 (15:32 +0000)
committerAndré Malo <nd@apache.org>
Mon, 28 Jul 2003 15:32:27 +0000 (15:32 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100818 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/mappers/mod_rewrite.c

diff --git a/CHANGES b/CHANGES
index 7e61555dc34c5e051a0b47165096eac1387603d6..f7db0070843debc936896f2226ddddaded6e0c48 100644 (file)
--- 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 <Hartmut.Keil@adnovum.ch>]
 
index 3ae288415107b7ebec9a81a48af39174a0ef7ba3..7200c59753c3f0988131fcc0e0c3a9d5880f027d 100644 (file)
@@ -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) {