diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/core/nginx.h | 2 | ||||
-rw-r--r-- | src/http/modules/ngx_http_autoindex_module.c | 12 | ||||
-rw-r--r-- | src/http/modules/ngx_http_proxy_module.c | 4 | ||||
-rw-r--r-- | src/http/modules/ngx_http_rewrite_module.c | 2 | ||||
-rw-r--r-- | src/http/ngx_http_postpone_filter_module.c | 7 | ||||
-rw-r--r-- | src/http/ngx_http_variables.c | 9 | ||||
-rw-r--r-- | src/http/ngx_http_variables.h | 1 |
7 files changed, 30 insertions, 7 deletions
diff --git a/src/core/nginx.h b/src/core/nginx.h index efc35b85e..1a08c424f 100644 --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -8,7 +8,7 @@ #define _NGINX_H_INCLUDED_ -#define NGINX_VER "nginx/0.1.33" +#define NGINX_VER "nginx/0.1.34" #define NGINX_VAR "NGINX" #define NGX_NEWPID_EXT ".newbin" diff --git a/src/http/modules/ngx_http_autoindex_module.c b/src/http/modules/ngx_http_autoindex_module.c index 76c5b0314..96ab81e48 100644 --- a/src/http/modules/ngx_http_autoindex_module.c +++ b/src/http/modules/ngx_http_autoindex_module.c @@ -33,6 +33,7 @@ typedef struct { typedef struct { ngx_flag_t enable; + ngx_flag_t localtime; } ngx_http_autoindex_loc_conf_t; @@ -58,6 +59,13 @@ static ngx_command_t ngx_http_autoindex_commands[] = { offsetof(ngx_http_autoindex_loc_conf_t, enable), NULL }, + { ngx_string("autoindex_localtime"), + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, + ngx_conf_set_flag_slot, + NGX_HTTP_LOC_CONF_OFFSET, + offsetof(ngx_http_autoindex_loc_conf_t, localtime), + NULL }, + ngx_null_command }; @@ -391,7 +399,7 @@ ngx_http_autoindex_handler(ngx_http_request_t *r) *b->last++ = ' '; - ngx_gmtime(entry[i].mtime, &tm); + ngx_gmtime(entry[i].mtime + ngx_gmtoff * 60 * alcf->localtime, &tm); b->last = ngx_sprintf(b->last, "%02d-%s-%d %02d:%02d ", tm.ngx_tm_mday, @@ -542,6 +550,7 @@ ngx_http_autoindex_create_loc_conf(ngx_conf_t *cf) } conf->enable = NGX_CONF_UNSET; + conf->localtime = NGX_CONF_UNSET; return conf; } @@ -554,6 +563,7 @@ ngx_http_autoindex_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) ngx_http_autoindex_loc_conf_t *conf = child; ngx_conf_merge_value(conf->enable, prev->enable, 0); + ngx_conf_merge_value(conf->localtime, prev->localtime, 0); return NGX_CONF_OK; } diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c index 92dd6cc9c..0211dab06 100644 --- a/src/http/modules/ngx_http_proxy_module.c +++ b/src/http/modules/ngx_http_proxy_module.c @@ -1576,6 +1576,10 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child) *name = src[i].key; + if (src[i].value.len == 0) { + continue; + } + if (ngx_http_script_variables_count(&src[i].value) == 0) { copy = ngx_array_push_n(conf->headers_set_len, sizeof(ngx_http_script_copy_code_t)); diff --git a/src/http/modules/ngx_http_rewrite_module.c b/src/http/modules/ngx_http_rewrite_module.c index da4719b7b..ed7abd66a 100644 --- a/src/http/modules/ngx_http_rewrite_module.c +++ b/src/http/modules/ngx_http_rewrite_module.c @@ -313,7 +313,7 @@ ngx_http_rewrite_var(ngx_http_request_t *r, uintptr_t data) /* * the ngx_http_rewrite_module sets variables directly in r->variables, - * and they should be handle by ngx_http_get_indexed_variable(), + * and they should be handled by ngx_http_get_indexed_variable(), * so the handler is called only if the variable is not initialized */ diff --git a/src/http/ngx_http_postpone_filter_module.c b/src/http/ngx_http_postpone_filter_module.c index 5c3e2c9c6..8e47816fb 100644 --- a/src/http/ngx_http_postpone_filter_module.c +++ b/src/http/ngx_http_postpone_filter_module.c @@ -45,6 +45,7 @@ ngx_http_postpone_filter(ngx_http_request_t *r, ngx_chain_t *in) { ngx_int_t rc; ngx_chain_t *out; + ngx_http_request_t *mr; ngx_http_postponed_request_t *pr, **ppr; if (r->connection->write->error) { @@ -98,14 +99,16 @@ ngx_http_postpone_filter(ngx_http_request_t *r, ngx_chain_t *in) out = in; } - if (out == NULL && r->out == NULL && !r->connection->buffered) { + mr = r->main ? r->main : r; + + if (out == NULL && mr->out == NULL && !mr->connection->buffered) { return NGX_OK; } ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http postpone filter out \"%V\"", &r->uri); - rc = ngx_http_next_filter(r->main ? r->main : r, out); + rc = ngx_http_next_filter(mr, out); if (rc == NGX_ERROR) { /* NGX_ERROR may be returned by any filter */ diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c index 12ab5154b..d66f0dc6c 100644 --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -276,7 +276,12 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name) if (v[key].name.len == name->len && ngx_strncmp(v[key].name.data, name->data, name->len) == 0) { - return v[key].handler(r, v[key].data); + if (v[key].flags & NGX_HTTP_VAR_INDEXED) { + return ngx_http_get_indexed_variable(r, v[key].data); + + } else { + return v[key].handler(r, v[key].data); + } } if (ngx_strncmp(name->data, "http_", 5) == 0) { @@ -701,7 +706,7 @@ ngx_http_variables_init_vars(ngx_conf_t *cf) { v[i].handler = av[n].handler; v[i].data = av[n].data; - v[i].flags = av[n].flags; + v[i].flags = av[n].flags | NGX_HTTP_VAR_INDEXED; goto next; } diff --git a/src/http/ngx_http_variables.h b/src/http/ngx_http_variables.h index 6624535aa..d986c7d21 100644 --- a/src/http/ngx_http_variables.h +++ b/src/http/ngx_http_variables.h @@ -30,6 +30,7 @@ typedef ngx_http_variable_value_t * #define NGX_HTTP_VAR_CHANGABLE 1 #define NGX_HTTP_VAR_NOCACHABLE 2 +#define NGX_HTTP_VAR_INDEXED 4 struct ngx_http_variable_s { |