]> granicus.if.org Git - apache/commitdiff
do not exit() from inside a module!
authorAndré Malo <nd@apache.org>
Sat, 21 Feb 2004 16:38:36 +0000 (16:38 +0000)
committerAndré Malo <nd@apache.org>
Sat, 21 Feb 2004 16:38:36 +0000 (16:38 +0000)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102729 13f79535-47bb-0310-9956-ffa450edef68

modules/loggers/mod_log_forensic.c

index c125cd2ed7a3197bdeb63010738e8207a60148f2..2f8c9ee4e495f4f75131b965a4223a3240bc5342 100644 (file)
@@ -65,12 +65,12 @@ static void *merge_forensic_log_scfg(apr_pool_t *p, void *parent, void *new)
     return cfg;
 }
 
-static void open_log(server_rec *s, apr_pool_t *p)
+static int open_log(server_rec *s, apr_pool_t *p)
 {
     fcfg *cfg = ap_get_module_config(s->module_config, &log_forensic_module);
 
     if (!cfg->logname || cfg->fd)
-        return;
+        return 1;
 
     if (*cfg->logname == '|') {
         piped_log *pl;
@@ -80,7 +80,7 @@ static void open_log(server_rec *s, apr_pool_t *p)
         if (pl == NULL) {
             ap_log_error(APLOG_MARK, APLOG_ERR, 0, s,
                          "couldn't spawn forensic log pipe %s", cfg->logname);
-            exit(1);
+            return 0;
         }
         cfg->fd = ap_piped_log_write_fd(pl);
     }
@@ -93,16 +93,22 @@ static void open_log(server_rec *s, apr_pool_t *p)
                                 APR_OS_DEFAULT, p)) != APR_SUCCESS) {
             ap_log_error(APLOG_MARK, APLOG_ERR, rv, s,
                          "could not open forensic log file %s.", fname);
-            exit(1);
+            return 0;
         }
     }
+
+    return 1;
 }
 
 static int log_init(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt,
                      server_rec *s)
 {
-    for ( ; s ; s = s->next)
-        open_log(s, p);
+    for ( ; s ; s = s->next) {
+        if (!open_log(s, p)) {
+            return HTTP_INTERNAL_SERVER_ERROR;
+        }
+    }
+
     return OK;
 }