Mercurial > hg > nginx
changeset 4768:1c5e2e4d5b35
Improved diagnostics when a directive is specified in the wrong context.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Sun, 29 Jul 2012 19:59:06 +0000 |
parents | d9190c84e594 |
children | f88555d76886 |
files | src/core/ngx_conf_file.c src/core/ngx_conf_file.h src/http/ngx_http_core_module.c |
diffstat | 3 files changed, 16 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/src/core/ngx_conf_file.c Sun Jul 29 19:45:30 2012 +0000 +++ b/src/core/ngx_conf_file.c Sun Jul 29 19:59:06 2012 +0000 @@ -282,24 +282,16 @@ { char *rv; void *conf, **confp; - ngx_uint_t i, multi; + ngx_uint_t i, found; ngx_str_t *name; ngx_command_t *cmd; name = cf->args->elts; - multi = 0; + found = 0; for (i = 0; ngx_modules[i]; i++) { - /* look up the directive in the appropriate modules */ - - if (ngx_modules[i]->type != NGX_CONF_MODULE - && ngx_modules[i]->type != cf->module_type) - { - continue; - } - cmd = ngx_modules[i]->commands; if (cmd == NULL) { continue; @@ -315,16 +307,18 @@ continue; } + found = 1; + + if (ngx_modules[i]->type != NGX_CONF_MODULE + && ngx_modules[i]->type != cf->module_type) + { + continue; + } /* is the directive's location right ? */ if (!(cmd->type & cf->cmd_type)) { - if (cmd->type & NGX_CONF_MULTI) { - multi = 1; - continue; - } - - goto not_allowed; + continue; } if (!(cmd->type & NGX_CONF_BLOCK) && last != NGX_OK) { @@ -408,17 +402,16 @@ } } - if (multi == 0) { + if (found) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "unknown directive \"%s\"", name->data); + "\"%s\" directive is not allowed here", name->data); return NGX_ERROR; } -not_allowed: + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "unknown directive \"%s\"", name->data); - ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "\"%s\" directive is not allowed here", name->data); return NGX_ERROR; invalid:
--- a/src/core/ngx_conf_file.h Sun Jul 29 19:45:30 2012 +0000 +++ b/src/core/ngx_conf_file.h Sun Jul 29 19:59:06 2012 +0000 @@ -45,7 +45,7 @@ #define NGX_CONF_ANY 0x00000400 #define NGX_CONF_1MORE 0x00000800 #define NGX_CONF_2MORE 0x00001000 -#define NGX_CONF_MULTI 0x00002000 +#define NGX_CONF_MULTI 0x00000000 /* compatibility */ #define NGX_DIRECT_CONF 0x00010000
--- a/src/http/ngx_http_core_module.c Sun Jul 29 19:45:30 2012 +0000 +++ b/src/http/ngx_http_core_module.c Sun Jul 29 19:59:06 2012 +0000 @@ -222,7 +222,7 @@ NULL }, { ngx_string("server"), - NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_MULTI|NGX_CONF_NOARGS, + NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS, ngx_http_core_server, 0, 0,