From c40fa87ce7f106f7a03d8aa58426173eff2c2d2d Mon Sep 17 00:00:00 2001 From: Stefan Fritsch Date: Sat, 20 Nov 2010 08:59:50 +0000 Subject: [PATCH] Log errors/infos during expression evaluation and associate the message with the module that is calling ap_expr_exec() git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1037140 13f79535-47bb-0310-9956-ffa450edef68 --- modules/aaa/mod_authz_core.c | 1 + modules/filters/mod_filter.c | 1 + modules/loggers/mod_log_config.c | 1 + modules/metadata/mod_headers.c | 1 + modules/ssl/ssl_engine_config.c | 1 + server/core.c | 1 + server/util_expr_eval.c | 16 ++++++++++++---- 7 files changed, 18 insertions(+), 4 deletions(-) diff --git a/modules/aaa/mod_authz_core.c b/modules/aaa/mod_authz_core.c index 73b13ab5308..2fb89c6b492 100644 --- a/modules/aaa/mod_authz_core.c +++ b/modules/aaa/mod_authz_core.c @@ -1008,6 +1008,7 @@ static const char *expr_parse_config(cmd_parms *cmd, const char *require_line, if (expr_err) return "Cannot parse expression in require line"; + expr->module_index = APLOG_MODULE_INDEX; *parsed_require_line = expr; return NULL; diff --git a/modules/filters/mod_filter.c b/modules/filters/mod_filter.c index 250c02d1472..eb81bffb67e 100644 --- a/modules/filters/mod_filter.c +++ b/modules/filters/mod_filter.c @@ -433,6 +433,7 @@ static const char *filter_provider(cmd_parms *cmd, void *CFG, "Error parsing FilterProvider expression:", err, NULL); } + node->module_index = APLOG_MODULE_INDEX; provider = apr_palloc(cmd->pool, sizeof(ap_filter_provider_t)); provider->expr = node; diff --git a/modules/loggers/mod_log_config.c b/modules/loggers/mod_log_config.c index 2225aef1e63..0b6c6f5a60d 100644 --- a/modules/loggers/mod_log_config.c +++ b/modules/loggers/mod_log_config.c @@ -1256,6 +1256,7 @@ static const char *add_custom_log(cmd_parms *cmd, void *dummy, const char *fn, NULL); if (err) return err; + cls->condition_expr->module_index = APLOG_MODULE_INDEX; } else { return "error in condition clause"; diff --git a/modules/metadata/mod_headers.c b/modules/metadata/mod_headers.c index 505cb06eaea..b1948e02043 100644 --- a/modules/metadata/mod_headers.c +++ b/modules/metadata/mod_headers.c @@ -498,6 +498,7 @@ static APR_INLINE const char *header_inout_cmd(cmd_parms *cmd, "Can't parse envclause/expression: ", err, NULL); } + expr->module_index = APLOG_MODULE_INDEX; } } diff --git a/modules/ssl/ssl_engine_config.c b/modules/ssl/ssl_engine_config.c index 0ed504422ef..4bccfe72d6b 100644 --- a/modules/ssl/ssl_engine_config.c +++ b/modules/ssl/ssl_engine_config.c @@ -1154,6 +1154,7 @@ const char *ssl_cmd_SSLRequire(cmd_parms *cmd, info->flags = AP_EXPR_FLAGS_SSL_EXPR_COMPAT; info->filename = cmd->directive->filename; info->line_number = cmd->directive->line_num; + info->module_index = APLOG_MODULE_INDEX; errstring = ap_expr_parse(cmd->pool, cmd->temp_pool, info, arg, NULL); if (errstring) { return apr_pstrcat(cmd->pool, "SSLRequire: ", errstring, NULL); diff --git a/server/core.c b/server/core.c index 83d75bfd3c1..ffeb98d9dc1 100644 --- a/server/core.c +++ b/server/core.c @@ -2043,6 +2043,7 @@ static const char *ifsection(cmd_parms *cmd, void *mconfig, const char *arg) if (expr_err) { return apr_psprintf(cmd->pool, "Cannot parse condition clause: %s", expr_err); } + conf->condition->module_index = APLOG_MODULE_INDEX; errmsg = ap_walk_config(cmd->directive->first_child, cmd, new_file_conf); if (errmsg != NULL) diff --git a/server/util_expr_eval.c b/server/util_expr_eval.c index c136b50d37e..edb1b7d7f79 100644 --- a/server/util_expr_eval.c +++ b/server/util_expr_eval.c @@ -687,10 +687,18 @@ AP_DECLARE(int) ap_expr_exec(request_rec *r, const ap_expr_info_t *info, const c *err = NULL; rc = ap_expr_eval(&ctx, info->root_node); - if (*err != NULL) - return (-1); - else - return (rc ? 1 : 0); + if (*err != NULL) { + ap_log_rerror(__FILE__, __LINE__, info->module_index, APLOG_ERR, 0, + r, "Evaluation of expression from %s:%d failed: %s", + info->filename, info->line_number, *err); + return -1; + } else { + rc = rc ? 1 : 0; + ap_log_rerror(__FILE__, __LINE__, info->module_index, APLOG_TRACE4, 0, + r, "Evaluation of expression from %s:%d gave: %d", + info->filename, info->line_number, rc); + return rc; + } } static const char *req_table_func(ap_expr_eval_ctx *ctx, const void *data, -- 2.47.2