[nginx] svn commit: r4769 - in trunk/src: core http

ru at nginx.com ru at nginx.com
Sun Jul 29 19:59:06 UTC 2012


Author: ru
Date: 2012-07-29 19:59:06 +0000 (Sun, 29 Jul 2012)
New Revision: 4769
URL: http://trac.nginx.org/nginx/changeset/4769/nginx

Log:
Improved diagnostics when a directive is specified in the wrong context.


Modified:
   trunk/src/core/ngx_conf_file.c
   trunk/src/core/ngx_conf_file.h
   trunk/src/http/ngx_http_core_module.c

Modified: trunk/src/core/ngx_conf_file.c
===================================================================
--- trunk/src/core/ngx_conf_file.c	2012-07-29 19:45:30 UTC (rev 4768)
+++ trunk/src/core/ngx_conf_file.c	2012-07-29 19:59:06 UTC (rev 4769)
@@ -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:

Modified: trunk/src/core/ngx_conf_file.h
===================================================================
--- trunk/src/core/ngx_conf_file.h	2012-07-29 19:45:30 UTC (rev 4768)
+++ trunk/src/core/ngx_conf_file.h	2012-07-29 19:59:06 UTC (rev 4769)
@@ -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
 

Modified: trunk/src/http/ngx_http_core_module.c
===================================================================
--- trunk/src/http/ngx_http_core_module.c	2012-07-29 19:45:30 UTC (rev 4768)
+++ trunk/src/http/ngx_http_core_module.c	2012-07-29 19:59:06 UTC (rev 4769)
@@ -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,



More information about the nginx-devel mailing list