diff options
author | Igor Sysoev <igor@sysoev.ru> | 2005-02-09 14:31:07 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2005-02-09 14:31:07 +0000 |
commit | aa8286101a57f11f2c1f9b5bf2d7ec121e74beea (patch) | |
tree | d87e4d87bf388c7a3c630170d9ba43a8591007ed /src/http/modules/proxy | |
parent | 9ef28fa32a4713d365aa8d4cfc1f8732d6de47f6 (diff) | |
download | nginx-aa8286101a57f11f2c1f9b5bf2d7ec121e74beea.tar.gz nginx-aa8286101a57f11f2c1f9b5bf2d7ec121e74beea.zip |
nginx-0.1.18-RELEASE importrelease-0.1.18
*) Workaround: the default values of the devpoll_events and the
devpoll_changes directives changed from 512 to 32 to be compatible
with Solaris 10.
*) Bugfix: the proxy_set_x_var and fastcgi_set_var directives were not
inherited.
*) Bugfix: in the redirect rewrite directive the arguments were
concatenated with URI by the "&" rather than the "?".
*) Bugfix: the lines without trailing ";" in the file being included by
the ngx_http_geo_module were silently ignored.
*) Feature: the ngx_http_stub_status_module.
*) Bugfix: the unknown log format in the access_log directive caused
the segmentation fault.
*) Feature: the new "document_root" parameter of the fastcgi_params
directive.
*) Feature: the fastcgi_redirect_errors directive.
*) Feature: the new "break" modifier of the "rewrite" directive allows
to stop the rewrite/location cycle and sets the current
configuration to the request.
Diffstat (limited to 'src/http/modules/proxy')
-rw-r--r-- | src/http/modules/proxy/ngx_http_proxy_handler.c | 14 | ||||
-rw-r--r-- | src/http/modules/proxy/ngx_http_proxy_handler.h | 2 | ||||
-rw-r--r-- | src/http/modules/proxy/ngx_http_proxy_upstream.c | 55 |
3 files changed, 42 insertions, 29 deletions
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c index a195b45e4..d213d6929 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.c +++ b/src/http/modules/proxy/ngx_http_proxy_handler.c @@ -1284,6 +1284,10 @@ static char *ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, ngx_conf_merge_value(conf->lm_factor, prev->lm_factor, 0); ngx_conf_merge_sec_value(conf->default_expires, prev->default_expires, 0); + if (conf->x_vars == NULL) { + conf->x_vars = prev->x_vars; + } + return NULL; } @@ -1389,10 +1393,10 @@ static char *ngx_http_proxy_set_x_var(ngx_conf_t *cf, ngx_command_t *cmd, ngx_http_variable_t *var; ngx_http_core_main_conf_t *cmcf; - if (lcf->x_vars.elts == NULL) { - if (ngx_array_init(&lcf->x_vars, cf->pool, 4, - sizeof(ngx_http_variable_t *)) == NGX_ERROR) - { + if (lcf->x_vars == NULL) { + lcf->x_vars = ngx_array_create(cf->pool, 4, + sizeof(ngx_http_variable_t *)); + if (lcf->x_vars == NULL) { return NGX_CONF_ERROR; } } @@ -1405,7 +1409,7 @@ static char *ngx_http_proxy_set_x_var(ngx_conf_t *cf, ngx_command_t *cmd, for (i = 0; i < cmcf->variables.nelts; i++) { if (ngx_strcasecmp(var[i].name.data, value[1].data) == 0) { - if (!(index = ngx_array_push(&lcf->x_vars))) { + if (!(index = ngx_array_push(lcf->x_vars))) { return NGX_CONF_ERROR; } diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.h b/src/http/modules/proxy/ngx_http_proxy_handler.h index 28d7971df..f950258dc 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.h +++ b/src/http/modules/proxy/ngx_http_proxy_handler.h @@ -87,7 +87,7 @@ typedef struct { ngx_path_t *cache_path; ngx_path_t *temp_path; - ngx_array_t x_vars; + ngx_array_t *x_vars; ngx_http_busy_lock_t *busy_lock; diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c index cf5195368..e2fe01554 100644 --- a/src/http/modules/proxy/ngx_http_proxy_upstream.c +++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c @@ -100,6 +100,11 @@ static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p) r = p->request; uc = p->lcf->upstream; +#if (NGX_SUPPRESS_WARN) + var = NULL; + index = NULL; +#endif + if (p->upstream->method) { len = http_methods[p->upstream->method - 1].len; @@ -169,20 +174,22 @@ static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p) } - cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); + if (p->lcf->x_vars) { + cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); - var = cmcf->variables.elts; - index = p->lcf->x_vars.elts; + var = cmcf->variables.elts; + index = p->lcf->x_vars->elts; - for (i = 0; i < p->lcf->x_vars.nelts; i++) { + for (i = 0; i < p->lcf->x_vars->nelts; i++) { - if (!(value = ngx_http_get_variable(r, index[i]))) { - continue; - } + if (!(value = ngx_http_get_variable(r, index[i]))) { + continue; + } - if (value->text.len) { - len += sizeof("X-") - 1 + var[index[i]].name.len + sizeof(": ") - 1 - + value->text.len + sizeof(CRLF) - 1; + if (value->text.len) { + len += sizeof("X-") - 1 + var[index[i]].name.len + + sizeof(": ") - 1 + value->text.len + sizeof(CRLF) - 1; + } } } @@ -356,26 +363,28 @@ static ngx_chain_t *ngx_http_proxy_create_request(ngx_http_proxy_ctx_t *p) } - for (i = 0; i < p->lcf->x_vars.nelts; i++) { + if (p->lcf->x_vars) { + for (i = 0; i < p->lcf->x_vars->nelts; i++) { - if (!(value = ngx_http_get_variable(r, index[i]))) { - continue; - } + if (!(value = ngx_http_get_variable(r, index[i]))) { + continue; + } - if (value->text.len == 0) { - continue; - } + if (value->text.len == 0) { + continue; + } - *b->last++ = 'X'; *b->last++ = '-'; + *b->last++ = 'X'; *b->last++ = '-'; - b->last = ngx_cpymem(b->last, var[index[i]].name.data, - var[index[i]].name.len); + b->last = ngx_cpymem(b->last, var[index[i]].name.data, + var[index[i]].name.len); - *b->last++ = ':'; *b->last++ = ' '; + *b->last++ = ':'; *b->last++ = ' '; - b->last = ngx_cpymem(b->last, value->text.data, value->text.len); + b->last = ngx_cpymem(b->last, value->text.data, value->text.len); - *b->last++ = CR; *b->last++ = LF; + *b->last++ = CR; *b->last++ = LF; + } } |