From: André Malo Date: Sat, 21 Feb 2004 16:38:36 +0000 (+0000) Subject: do not exit() from inside a module! X-Git-Tag: pre_ajp_proxy~641 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f93ccbd7c2f011f488450983ed6e6e13e8577c72;p=apache do not exit() from inside a module! git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@102729 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/modules/loggers/mod_log_forensic.c b/modules/loggers/mod_log_forensic.c index c125cd2ed7..2f8c9ee4e4 100644 --- a/modules/loggers/mod_log_forensic.c +++ b/modules/loggers/mod_log_forensic.c @@ -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; }