comparison 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
comparison
equal deleted inserted replaced
91:c3eee83ea942 92:45945fa8b8ba
60 ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename) 60 ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename)
61 { 61 {
62 char *rv; 62 char *rv;
63 ngx_fd_t fd; 63 ngx_fd_t fd;
64 ngx_int_t rc; 64 ngx_int_t rc;
65 ngx_uint_t block;
65 ngx_conf_file_t *prev; 66 ngx_conf_file_t *prev;
66 67
67 #if (NGX_SUPPRESS_WARN) 68 #if (NGX_SUPPRESS_WARN)
68 fd = NGX_INVALID_FILE; 69 fd = NGX_INVALID_FILE;
69 prev = NULL; 70 prev = NULL;
101 cf->conf_file->file.name.len = filename->len; 102 cf->conf_file->file.name.len = filename->len;
102 cf->conf_file->file.name.data = filename->data; 103 cf->conf_file->file.name.data = filename->data;
103 cf->conf_file->file.offset = 0; 104 cf->conf_file->file.offset = 0;
104 cf->conf_file->file.log = cf->log;; 105 cf->conf_file->file.log = cf->log;;
105 cf->conf_file->line = 1; 106 cf->conf_file->line = 1;
106 } 107
108 block = 0;
109
110 } else {
111 block = 1;
112 }
113
107 114
108 for ( ;; ) { 115 for ( ;; ) {
109 rc = ngx_conf_read_token(cf); 116 rc = ngx_conf_read_token(cf);
110 117
111 /* 118 /*
112 * ngx_conf_read_token() may return 119 * ngx_conf_read_token() may return
120 *
113 * NGX_ERROR there is error 121 * NGX_ERROR there is error
114 * NGX_OK the token terminated by ";" was found 122 * NGX_OK the token terminated by ";" was found
115 * NGX_CONF_BLOCK_START the token terminated by "{" was found 123 * NGX_CONF_BLOCK_START the token terminated by "{" was found
116 * NGX_CONF_BLOCK_DONE the "}" was found 124 * NGX_CONF_BLOCK_DONE the "}" was found
117 * NGX_CONF_FILE_DONE the configuration file is done 125 * NGX_CONF_FILE_DONE the configuration file is done
118 */ 126 */
119 127
120 if (rc == NGX_ERROR) { 128 if (rc == NGX_ERROR) {
129 break;
130 }
131
132 if (rc == NGX_CONF_BLOCK_DONE) {
133 block = 0;
134 }
135
136 if (rc == NGX_CONF_FILE_DONE && block) {
137 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
138 "unexpected end of file in %s:%ui, expecting \"}\"",
139 cf->conf_file->file.name.data,
140 cf->conf_file->line);
141 rc = NGX_ERROR;
121 break; 142 break;
122 } 143 }
123 144
124 if (rc != NGX_OK && rc != NGX_CONF_BLOCK_START) { 145 if (rc != NGX_OK && rc != NGX_CONF_BLOCK_START) {
125 break; 146 break;
637 658
638 old = *name; 659 old = *name;
639 660
640 name->len = cycle->root.len + old.len; 661 name->len = cycle->root.len + old.len;
641 662
642 if (cycle->connections) { 663 if (cycle->connections0) {
643 name->data = ngx_palloc(cycle->pool, name->len + 1); 664 name->data = ngx_palloc(cycle->pool, name->len + 1);
644 if (name->data == NULL) { 665 if (name->data == NULL) {
645 return NGX_ERROR; 666 return NGX_ERROR;
646 } 667 }
647 668