]> granicus.if.org Git - apache/commitdiff
exit(1) should never occur in any module. Stay away from it.
authorAndré Malo <nd@apache.org>
Mon, 28 Jul 2003 14:53:32 +0000 (14:53 +0000)
committerAndré Malo <nd@apache.org>
Mon, 28 Jul 2003 14:53:32 +0000 (14:53 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@100814 13f79535-47bb-0310-9956-ffa450edef68

modules/mappers/mod_rewrite.c

index bf0d578f0f079ec346a3001bbfbad27b0a3da2cb..3ae288415107b7ebec9a81a48af39174a0ef7ba3 100644 (file)
@@ -381,7 +381,7 @@ static char *current_logtime(request_rec *r)
     return apr_pstrdup(r->pool, tstr);
 }
 
-static void open_rewritelog(server_rec *s, apr_pool_t *p)
+static int open_rewritelog(server_rec *s, apr_pool_t *p)
 {
     rewrite_server_conf *conf;
     const char *fname;
@@ -390,14 +390,12 @@ static void open_rewritelog(server_rec *s, apr_pool_t *p)
 
     conf = ap_get_module_config(s->module_config, &rewrite_module);
 
-    if (conf->rewritelogfile == NULL) {
-        return;
-    }
-    if (*(conf->rewritelogfile) == '\0') {
-        return;
-    }
-    if (conf->rewritelogfp != NULL) {
-        return; /* virtual log shared w/ main server */
+    /* - no logfile configured
+     * - logfilename empty
+     * - virtual log shared w/ main server
+     */
+    if (!conf->rewritelogfile || !*conf->rewritelogfile || conf->rewritelogfp) {
+        return 1;
     }
 
     if (*conf->rewritelogfile == '|') {
@@ -405,17 +403,17 @@ static void open_rewritelog(server_rec *s, apr_pool_t *p)
             ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
                          "mod_rewrite: could not open reliable pipe "
                          "to RewriteLog filter %s", conf->rewritelogfile+1);
-            exit(1);
+            return 0;
         }
         conf->rewritelogfp = ap_piped_log_write_fd(pl);
     }
-    else if (*conf->rewritelogfile != '\0') {
+    else {
         fname = ap_server_root_relative(p, conf->rewritelogfile);
         if (!fname) {
             ap_log_error(APLOG_MARK, APLOG_ERR, APR_EBADPATH, s,
                          "mod_rewrite: Invalid RewriteLog "
                          "path %s", conf->rewritelogfile);
-            exit(1);
+            return 0;
         }
         if ((rc = apr_file_open(&conf->rewritelogfp, fname,
                                 REWRITELOG_FLAGS, REWRITELOG_MODE, p))
@@ -423,10 +421,11 @@ static void open_rewritelog(server_rec *s, apr_pool_t *p)
             ap_log_error(APLOG_MARK, APLOG_ERR, rc, s,
                          "mod_rewrite: could not open RewriteLog "
                          "file %s", fname);
-            exit(1);
+            return 0;
         }
     }
-    return;
+
+    return 1;
 }
 
 static void rewritelog(request_rec *r, int level, const char *text, ...)
@@ -3787,7 +3786,10 @@ static int post_config(apr_pool_t *p,
      * - open the RewriteMap prg:xxx programs
      */
     for (; s; s = s->next) {
-        open_rewritelog(s, p);
+        if (!open_rewritelog(s, p)) {
+            return HTTP_INTERNAL_SERVER_ERROR;
+        }
+
         if (!first_time) {
             if (run_rewritemap_programs(s, p) != APR_SUCCESS) {
                 return HTTP_INTERNAL_SERVER_ERROR;