From f3a89a2cd3668ed908a0618046b9909da635f439 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Mon, 7 Jun 2010 09:36:33 +0000 Subject: [PATCH] merge r3452, r3462, r3471, r3472: fix miscellaneous name bugs: *) fix $upstream_http_ variable prefix length *) use a right "Location" header name, however, it did not harm, since ngx_http_variable_sent_location() never use key name field *) fix proxy_redirect name in error message *) "proxy_redirect default" may not be used if a proxy_pass uses variables --- src/http/modules/ngx_http_proxy_module.c | 11 +++++++++-- src/http/ngx_http_header_filter_module.c | 4 ++-- src/http/ngx_http_variables.c | 2 +- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c index 19dbd5cfc..03750784c 100644 --- a/src/http/modules/ngx_http_proxy_module.c +++ b/src/http/modules/ngx_http_proxy_module.c @@ -1906,7 +1906,7 @@ ngx_http_proxy_create_loc_conf(ngx_conf_t *cf) * conf->body_set_len = NULL; * conf->body_set = NULL; * conf->body_source = { 0, NULL }; - * conf->rewrite_locations = NULL; + * conf->redirects = NULL; */ conf->upstream.store = NGX_CONF_UNSET; @@ -2747,9 +2747,16 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, ngx_command_t *cmd, void *conf) } if (ngx_strcmp(value[1].data, "default") == 0) { + if (plcf->proxy_lengths) { + ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, + "\"proxy_redirect default\" may not be used " + "with \"proxy_pass\" directive with variables"); + return NGX_CONF_ERROR; + } + if (plcf->url.data == NULL) { ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, - "\"proxy_rewrite_location default\" must go " + "\"proxy_redirect default\" must go " "after the \"proxy_pass\" directive"); return NGX_CONF_ERROR; } diff --git a/src/http/ngx_http_header_filter_module.c b/src/http/ngx_http_header_filter_module.c index 0f6f1731a..237911154 100644 --- a/src/http/ngx_http_header_filter_module.c +++ b/src/http/ngx_http_header_filter_module.c @@ -538,8 +538,8 @@ ngx_http_header_filter(ngx_http_request_t *r) r->headers_out.location->value.len = b->last - p; r->headers_out.location->value.data = p; - r->headers_out.location->key.len = sizeof("Location: ") - 1; - r->headers_out.location->key.data = (u_char *) "Location: "; + r->headers_out.location->key.len = sizeof("Location") - 1; + r->headers_out.location->key.data = (u_char *) "Location"; *b->last++ = CR; *b->last++ = LF; } diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c index fc8ca9b02..f68edc27b 100644 --- a/src/http/ngx_http_variables.c +++ b/src/http/ngx_http_variables.c @@ -494,7 +494,7 @@ ngx_http_get_variable(ngx_http_request_t *r, ngx_str_t *name, ngx_uint_t key, return NULL; } - if (ngx_strncmp(name->data, "upstream_http_", 10) == 0) { + if (ngx_strncmp(name->data, "upstream_http_", 14) == 0) { if (ngx_http_upstream_header_variable(r, vv, (uintptr_t) name) == NGX_OK)