aboutsummaryrefslogtreecommitdiff
path: root/src/http/modules/ngx_http_rewrite_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/http/modules/ngx_http_rewrite_module.c')
-rw-r--r--src/http/modules/ngx_http_rewrite_module.c46
1 files changed, 33 insertions, 13 deletions
diff --git a/src/http/modules/ngx_http_rewrite_module.c b/src/http/modules/ngx_http_rewrite_module.c
index 5709b5652..e3b2edcfe 100644
--- a/src/http/modules/ngx_http_rewrite_module.c
+++ b/src/http/modules/ngx_http_rewrite_module.c
@@ -16,6 +16,7 @@ typedef struct {
ngx_uint_t stack_size;
ngx_flag_t log;
+ ngx_flag_t uninitialized_variable_warn;
} ngx_http_rewrite_loc_conf_t;
@@ -91,13 +92,21 @@ static ngx_command_t ngx_http_rewrite_commands[] = {
NULL },
{ ngx_string("rewrite_log"),
- NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
- |NGX_CONF_TAKE1,
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF
+ |NGX_HTTP_LIF_CONF|NGX_CONF_FLAG,
ngx_conf_set_flag_slot,
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_rewrite_loc_conf_t, log),
NULL },
+ { ngx_string("uninitialized_variable_warn"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF
+ |NGX_HTTP_LIF_CONF|NGX_CONF_FLAG,
+ ngx_conf_set_flag_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_rewrite_loc_conf_t, uninitialized_variable_warn),
+ NULL },
+
ngx_null_command
};
@@ -138,11 +147,11 @@ ngx_http_rewrite_handler(ngx_http_request_t *r)
{
ngx_http_script_code_pt code;
ngx_http_script_engine_t *e;
- ngx_http_rewrite_loc_conf_t *cf;
+ ngx_http_rewrite_loc_conf_t *rlcf;
- cf = ngx_http_get_module_loc_conf(r, ngx_http_rewrite_module);
+ rlcf = ngx_http_get_module_loc_conf(r, ngx_http_rewrite_module);
- if (cf->codes == NULL) {
+ if (rlcf->codes == NULL) {
return NGX_DECLINED;
}
@@ -152,13 +161,13 @@ ngx_http_rewrite_handler(ngx_http_request_t *r)
}
e->sp = ngx_pcalloc(r->pool,
- cf->stack_size * sizeof(ngx_http_variable_value_t));
+ rlcf->stack_size * sizeof(ngx_http_variable_value_t));
if (e->sp == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
- if (cf->captures) {
- e->captures = ngx_palloc(r->pool, cf->captures * sizeof(int));
+ if (rlcf->captures) {
+ e->captures = ngx_palloc(r->pool, rlcf->captures * sizeof(int));
if (e->captures == NULL) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
@@ -167,10 +176,10 @@ ngx_http_rewrite_handler(ngx_http_request_t *r)
e->captures = NULL;
}
- e->ip = cf->codes->elts;
+ e->ip = rlcf->codes->elts;
e->request = r;
e->quote = 1;
- e->log = cf->log;
+ e->log = rlcf->log;
e->status = NGX_DECLINED;
while (*(uintptr_t *) e->ip) {
@@ -186,8 +195,16 @@ static ngx_int_t
ngx_http_rewrite_var(ngx_http_request_t *r, ngx_http_variable_value_t *v,
uintptr_t data)
{
- ngx_http_variable_t *var;
- ngx_http_core_main_conf_t *cmcf;
+ ngx_http_variable_t *var;
+ ngx_http_core_main_conf_t *cmcf;
+ ngx_http_rewrite_loc_conf_t *rlcf;
+
+ rlcf = ngx_http_get_module_loc_conf(r, ngx_http_rewrite_module);
+
+ if (rlcf->uninitialized_variable_warn == 0) {
+ *v = ngx_http_variable_null_value;
+ return NGX_OK;
+ }
cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
@@ -199,7 +216,7 @@ ngx_http_rewrite_var(ngx_http_request_t *r, ngx_http_variable_value_t *v,
* so the handler is called only if the variable is not initialized
*/
- ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
+ ngx_log_error(NGX_LOG_WARN, r->connection->log, 0,
"using uninitialized \"%V\" variable", &var[data].name);
*v = ngx_http_variable_null_value;
@@ -220,6 +237,7 @@ ngx_http_rewrite_create_loc_conf(ngx_conf_t *cf)
conf->stack_size = NGX_CONF_UNSET_UINT;
conf->log = NGX_CONF_UNSET;
+ conf->uninitialized_variable_warn = NGX_CONF_UNSET;
return conf;
}
@@ -234,6 +252,8 @@ ngx_http_rewrite_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
uintptr_t *code;
ngx_conf_merge_value(conf->log, prev->log, 0);
+ ngx_conf_merge_value(conf->uninitialized_variable_warn,
+ prev->uninitialized_variable_warn, 1);
ngx_conf_merge_unsigned_value(conf->stack_size, prev->stack_size, 10);
if (conf->codes == NULL) {