nginx-0.1.14-RELEASE import
*) Feature: the autoconfiguration directives:
--http-client-body-temp-path=PATH, --http-proxy-temp-path=PATH, and
--http-fastcgi-temp-path=PATH
*) Change: the directory name for the temporary files with the client
request body is specified by directive client_body_temp_path, by
default it is <prefix>/client_body_temp.
*) Feature: the ngx_http_fastcgi_module and the directives:
fastcgi_pass, fastcgi_root, fastcgi_index, fastcgi_params,
fastcgi_connect_timeout, fastcgi_send_timeout, fastcgi_read_timeout,
fastcgi_send_lowat, fastcgi_header_buffer_size, fastcgi_buffers,
fastcgi_busy_buffers_size, fastcgi_temp_path,
fastcgi_max_temp_file_size, fastcgi_temp_file_write_size,
fastcgi_next_upstream, and fastcgi_x_powered_by.
*) Bugfix: the "[alert] zero size buf" error; the bug had appeared in
0.1.3.
*) Change: the URI must be specified after the host name in the
proxy_pass directive.
*) Change: the %3F symbol in the URI was considered as the argument
string start.
*) Feature: the unix domain sockets support in the
ngx_http_proxy_module.
*) Feature: the ssl_engine and ssl_ciphers directives.
Thanks to Sergey Skvortsov for SSL-accelerator.
diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c
index 08d9aba..37983fe 100644
--- a/src/core/ngx_file.c
+++ b/src/core/ngx_file.c
@@ -193,7 +193,7 @@
ssize_t level;
ngx_uint_t i, n;
ngx_str_t *value;
- ngx_path_t *path, **pp, **slot;
+ ngx_path_t *path, **slot;
slot = (ngx_path_t **) (p + cmd->offset);
@@ -209,7 +209,7 @@
path->name = value[1];
path->len = 0;
- path->gc_handler = (ngx_gc_handler_pt) cmd->post;
+ path->cleaner = (ngx_gc_handler_pt) cmd->post;
path->conf_file = cf->conf_file->file.name.data;
path->line = cf->conf_file->line;
@@ -227,42 +227,65 @@
path->level[i++] = 0;
}
+ *slot = path;
- pp = cf->cycle->pathes.elts;
+ if (ngx_add_path(cf, slot) == NGX_ERROR) {
+ return NGX_CONF_ERROR;
+ }
+
+ return NGX_CONF_OK;
+}
+
+
+ngx_int_t ngx_add_path(ngx_conf_t *cf, ngx_path_t **slot)
+{
+ ngx_uint_t i, n;
+ ngx_path_t *path, **p;
+
+ path = *slot;
+
+ p = cf->cycle->pathes.elts;
for (i = 0; i < cf->cycle->pathes.nelts; i++) {
- if (pp[i]->name.len == path->name.len
- && ngx_strcmp(pp[i]->name.data, path->name.data) == 0)
+ if (p[i]->name.len == path->name.len
+ && ngx_strcmp(p[i]->name.data, path->name.data) == 0)
{
for (n = 0; n < 3; n++) {
- if (pp[i]->level[n] != path->level[n]) {
+ if (p[i]->level[n] != path->level[n]) {
+ if (path->conf_file == NULL) {
+ ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
+ "the path name \"%V\" in %s:%ui has "
+ "the same name as default path but "
+ "the different levels, you need to "
+ "define default path in http section",
+ &p[i]->name, p[i]->conf_file, p[i]->line);
+ return NGX_ERROR;
+ }
+
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
- "the same \"%V\" path name in %s:%ui "
- "has the different levels than",
- &pp[i]->name, pp[i]->conf_file, pp[i]->line);
- return NGX_CONF_ERROR;
+ "the same path name \"%V\" in %s:%ui "
+ "has the different levels than",
+ &p[i]->name, p[i]->conf_file, p[i]->line);
+ return NGX_ERROR;
}
- if (pp[i]->level[n] == 0) {
+ if (p[i]->level[n] == 0) {
break;
}
}
- *slot = pp[i];
+ *slot = p[i];
- return NGX_CONF_OK;
+ return NGX_OK;
}
}
- *slot = path;
-
-
- if (!(pp = ngx_array_push(&cf->cycle->pathes))) {
- return NGX_CONF_ERROR;
+ if (!(p = ngx_array_push(&cf->cycle->pathes))) {
+ return NGX_ERROR;
}
- *pp = path;
+ *p = path;
- return NGX_CONF_OK;
+ return NGX_OK;
}