diff src/core/ngx_conf_file.c @ 92:45945fa8b8ba NGINX_0_2_0

nginx 0.2.0 *) The pid-file names used during online upgrade was changed and now is not required a manual rename operation. The old master process adds the ".oldbin" suffix to its pid-file and executes a new binary file. The new master process creates usual pid-file without the ".newbin" suffix. If the master process exits, then old master process renames back its pid-file with the ".oldbin" suffix to the pid-file without suffix. *) Change: the "worker_connections" directive, new name of the "connections" directive; now the directive specifies maximum number of connections, but not maximum socket descriptor number. *) Feature: SSL supports the session cache inside one worker process. *) Feature: the "satisfy_any" directive. *) Change: the ngx_http_access_module and ngx_http_auth_basic_module do not run for subrequests. *) Feature: the "worker_rlimit_nofile" and "worker_rlimit_sigpending" directives. *) Bugfix: if all backend using in load-balancing failed after one error, then nginx did not try do connect to them during 60 seconds. *) Bugfix: in IMAP/POP3 command argument parsing. Thanks to Rob Mueller. *) Bugfix: errors while using SSL in IMAP/POP3 proxy. *) Bugfix: errors while using SSI and gzipping. *) Bugfix: the "Expires" and "Cache-Control" header lines were omitted from the 304 responses. Thanks to Alexandr Kukushkin.
author Igor Sysoev <http://sysoev.ru>
date Fri, 23 Sep 2005 00:00:00 +0400
parents 71c46860eb55
children dad2fe8ecf08
line wrap: on
line diff
--- a/src/core/ngx_conf_file.c
+++ b/src/core/ngx_conf_file.c
@@ -62,6 +62,7 @@ ngx_conf_parse(ngx_conf_t *cf, ngx_str_t
     char             *rv;
     ngx_fd_t          fd;
     ngx_int_t         rc;
+    ngx_uint_t        block;
     ngx_conf_file_t  *prev;
 
 #if (NGX_SUPPRESS_WARN)
@@ -103,13 +104,20 @@ ngx_conf_parse(ngx_conf_t *cf, ngx_str_t
         cf->conf_file->file.offset = 0;
         cf->conf_file->file.log = cf->log;;
         cf->conf_file->line = 1;
+
+        block = 0;
+
+    } else {
+        block = 1;
     }
 
+
     for ( ;; ) {
         rc = ngx_conf_read_token(cf);
 
         /*
          * ngx_conf_read_token() may return
+         *
          *    NGX_ERROR             there is error
          *    NGX_OK                the token terminated by ";" was found
          *    NGX_CONF_BLOCK_START  the token terminated by "{" was found
@@ -121,6 +129,19 @@ ngx_conf_parse(ngx_conf_t *cf, ngx_str_t
             break;
         }
 
+        if (rc == NGX_CONF_BLOCK_DONE) {
+            block = 0;
+        }
+
+        if (rc == NGX_CONF_FILE_DONE && block) {
+            ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+                         "unexpected end of file in %s:%ui, expecting \"}\"",
+                         cf->conf_file->file.name.data,
+                         cf->conf_file->line);
+            rc = NGX_ERROR;
+            break;
+        }
+
         if (rc != NGX_OK && rc != NGX_CONF_BLOCK_START) {
             break;
         }
@@ -639,7 +660,7 @@ ngx_conf_full_name(ngx_cycle_t *cycle, n
 
     name->len = cycle->root.len + old.len;
 
-    if (cycle->connections) {
+    if (cycle->connections0) {
         name->data = ngx_palloc(cycle->pool, name->len + 1);
         if (name->data == NULL) {
             return  NGX_ERROR;