From: André Malo Date: Thu, 31 Jul 2003 23:43:37 +0000 (+0000) Subject: exit(1) should never occur in any module. Stay away from it. X-Git-Tag: 2.0.48~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=906c75968d4960c4fb763699711d4115696ad33d;p=thirdparty%2Fapache%2Fhttpd.git exit(1) should never occur in any module. Stay away from it. Reviewed by: Jeff Trawick, Bill Stoddard git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@100884 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/STATUS b/STATUS index ea1c41ff4ba..d42260c41c3 100644 --- a/STATUS +++ b/STATUS @@ -1,5 +1,5 @@ APACHE 2.0 STATUS: -*-text-*- -Last modified at [$Date: 2003/07/31 23:15:12 $] +Last modified at [$Date: 2003/07/31 23:43:36 $] Release: @@ -278,11 +278,6 @@ PATCHES TO PORT FROM 2.1 modules/mappers/mod_rewrite.c: r1.162 +1: nd, trawick (?) - * mod_rewrite: don't exit(1) if the logfile could not be opened. Return - internal server error instead to shutdown cleanly. - modules/mappers/mod_rewrite.c: r1.191 - +1: nd, trawick, stoddard - * Install config.nice to make minor version upgrades easier. Makefile.in: r1.136 +1: slive, trawick, erikabele diff --git a/modules/mappers/mod_rewrite.c b/modules/mappers/mod_rewrite.c index 2d57a8ccf89..81589aec603 100644 --- a/modules/mappers/mod_rewrite.c +++ b/modules/mappers/mod_rewrite.c @@ -1040,7 +1040,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; @@ -3400,7 +3403,7 @@ static char *select_random_value_part(request_rec *r, char *value) */ -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; @@ -3412,14 +3415,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 == '|') { @@ -3427,7 +3428,7 @@ 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); } @@ -3437,7 +3438,7 @@ static void open_rewritelog(server_rec *s, apr_pool_t *p) 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)) @@ -3445,10 +3446,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, ...) diff --git a/modules/mappers/mod_rewrite.h b/modules/mappers/mod_rewrite.h index 2a46b6199b7..b45c5f03b22 100644 --- a/modules/mappers/mod_rewrite.h +++ b/modules/mappers/mod_rewrite.h @@ -440,7 +440,7 @@ static void rewrite_rand_init(void); static int rewrite_rand(int l, int h); /* rewriting logfile support */ -static void open_rewritelog(server_rec *s, apr_pool_t *p); +static int open_rewritelog(server_rec *s, apr_pool_t *p); static void rewritelog(request_rec *r, int level, const char *text, ...) __attribute__((format(printf,3,4))); static char *current_logtime(request_rec *r);