From c7c6e876a93b36ea8e8d05784880a314b8ac6c3a Mon Sep 17 00:00:00 2001 From: Ian Holsman Date: Sat, 24 Nov 2001 00:08:30 +0000 Subject: [PATCH] change open_logs hook to return a value, allowing you to flag a error while opening logs Obtained from: Doug MacEachern git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92149 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ include/http_config.h | 5 +++-- modules/experimental/mod_example.c | 3 ++- modules/loggers/mod_log_config.c | 3 ++- server/config.c | 4 ++-- server/core.c | 3 ++- server/main.c | 11 +++++++++-- 7 files changed, 23 insertions(+), 9 deletions(-) diff --git a/CHANGES b/CHANGES index f9397fe846..66e52dff45 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,8 @@ Changes with Apache 2.0.29-dev + *) Change open_logs hook to return a value, allowing you + to flag a error while opening logs + [Ian Holsman, Doug MacEachern] *) Change post_config hook to return a value, allowing you to flag a error post config diff --git a/include/http_config.h b/include/http_config.h index 9f24aa4126..22b901e282 100644 --- a/include/http_config.h +++ b/include/http_config.h @@ -979,7 +979,7 @@ AP_DECLARE_HOOK(void,pre_config,(apr_pool_t *pconf,apr_pool_t *plog,apr_pool_t * * @param plog The logging streams pool * @param ptemp The temporary pool * @param s The list of server_recs - * @return OK or a + * @return OK or DECLINED on success anything else is a error */ AP_DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog,apr_pool_t *ptemp,server_rec *s)) @@ -989,8 +989,9 @@ AP_DECLARE_HOOK(int,post_config,(apr_pool_t *pconf,apr_pool_t *plog,apr_pool_t * * @param plog The logging streams pool * @param ptemp The temporary pool * @param s The list of server_recs + * @return OK or DECLINED on success anything else is a error */ -AP_DECLARE_HOOK(void,open_logs,(apr_pool_t *pconf,apr_pool_t *plog,apr_pool_t *ptemp,server_rec *s)) +AP_DECLARE_HOOK(int,open_logs,(apr_pool_t *pconf,apr_pool_t *plog,apr_pool_t *ptemp,server_rec *s)) /** * Run the child_init functions for each module diff --git a/modules/experimental/mod_example.c b/modules/experimental/mod_example.c index 663652891b..8e0b78ae4b 100644 --- a/modules/experimental/mod_example.c +++ b/modules/experimental/mod_example.c @@ -882,13 +882,14 @@ static int x_post_config(apr_pool_t *pconf, apr_pool_t *plog, * server will still call any remaining modules with an handler for this * phase. */ -static void x_open_logs(apr_pool_t *pconf, apr_pool_t *plog, +static int x_open_logs(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { /* * Log the call and exit. */ trace_add(s, NULL, NULL, "x_open_logs()"); + return OK; } /* diff --git a/modules/loggers/mod_log_config.c b/modules/loggers/mod_log_config.c index 3ce3de027b..2213b6c852 100644 --- a/modules/loggers/mod_log_config.c +++ b/modules/loggers/mod_log_config.c @@ -1149,7 +1149,7 @@ static apr_status_t flush_all_logs(void *data) } #endif -static void init_config_log(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt, server_rec *s) +static int init_config_log(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt, server_rec *s) { /* First, do "physical" server, which gets default log fd and format * for the virtual servers, if they don't override... @@ -1162,6 +1162,7 @@ static void init_config_log(apr_pool_t *pc, apr_pool_t *p, apr_pool_t *pt, serve for (s = s->next; s; s = s->next) { open_multi_logs(s, p); } + return OK; } static void init_child(apr_pool_t *p, server_rec *s) diff --git a/server/config.c b/server/config.c index 587e452261..bfd120154d 100644 --- a/server/config.c +++ b/server/config.c @@ -176,9 +176,9 @@ AP_DECLARE(int) ap_run_post_config (apr_pool_t *pconf, } */ -AP_IMPLEMENT_HOOK_VOID(open_logs, +AP_IMPLEMENT_HOOK_RUN_ALL(int, open_logs, (apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, - server_rec *s),(pconf,plog,ptemp,s)) + server_rec *s),(pconf,plog,ptemp,s),OK,DECLINED) AP_IMPLEMENT_HOOK_VOID(child_init, (apr_pool_t *pchild, server_rec *s),(pchild,s)) diff --git a/server/core.c b/server/core.c index dcdeeff7e5..a6b90f9576 100644 --- a/server/core.c +++ b/server/core.c @@ -3264,9 +3264,10 @@ static int core_post_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *pte return OK; } -static void core_open_logs(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) +static int core_open_logs(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { ap_open_logs(s, pconf); + return OK; } static void core_insert_filter(request_rec *r) diff --git a/server/main.c b/server/main.c index 9e279419ec..7bbee310d7 100644 --- a/server/main.c +++ b/server/main.c @@ -396,7 +396,10 @@ int main(int argc, const char * const argv[]) destroy_and_exit_process(process, 0); } apr_pool_clear(plog); - ap_run_open_logs(pconf, plog, ptemp, server_conf); + if ( ap_run_open_logs(pconf, plog, ptemp, server_conf) != OK) { + ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR| APLOG_NOERRNO, 0, NULL, "Unable to open logs\n"); + destroy_and_exit_process(process, 1); + } if ( ap_run_post_config(pconf, plog, ptemp, server_conf) != OK) { ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR| APLOG_NOERRNO, 0, NULL, "Configuration Failed\n"); destroy_and_exit_process(process, 1); @@ -425,7 +428,11 @@ int main(int argc, const char * const argv[]) ap_fini_vhost_config(pconf, server_conf); apr_sort_hooks(); apr_pool_clear(plog); - ap_run_open_logs(pconf, plog, ptemp, server_conf); + if ( ap_run_open_logs(pconf, plog, ptemp, server_conf) != OK) { + ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR| APLOG_NOERRNO, 0, NULL, "Unable to open logs\n"); + destroy_and_exit_process(process, 1); + } + if (ap_run_post_config(pconf, plog, ptemp, server_conf) != OK) { ap_log_error(APLOG_MARK, APLOG_STARTUP |APLOG_ERR | APLOG_NOERRNO, 0, NULL, "Configuration Failed\n"); destroy_and_exit_process(process, 1); -- 2.50.1