# HG changeset patch # User Igor Sysoev # Date 1196262365 0 # Node ID e9bd042134cb33095d2645bd86ae86a12c7c1832 # Parent 695cb0bf4dc4d15a2f706ae7792f4453f8dfea34 fix segfault diff --git a/src/http/modules/ngx_http_proxy_module.c b/src/http/modules/ngx_http_proxy_module.c --- a/src/http/modules/ngx_http_proxy_module.c +++ b/src/http/modules/ngx_http_proxy_module.c @@ -637,8 +637,6 @@ ngx_http_proxy_create_request(ngx_http_r plcf = ngx_http_get_module_loc_conf(r, ngx_http_proxy_module); - len = sizeof(ngx_http_proxy_version) - 1 + sizeof(CRLF) - 1; - if (u->method.len) { /* HEAD was changed to GET to cache response */ method = u->method; @@ -652,6 +650,8 @@ ngx_http_proxy_create_request(ngx_http_r method.len++; } + len = method.len + sizeof(ngx_http_proxy_version) - 1 + sizeof(CRLF) - 1; + escape = 0; loc_len = 0; unparsed_uri = 0; @@ -659,12 +659,12 @@ ngx_http_proxy_create_request(ngx_http_r ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module); if (plcf->proxy_lengths) { - len += method.len + ctx->vars.uri.len; + len += ctx->vars.uri.len; } else if (ctx->vars.uri.len == 0 && r->valid_unparsed_uri && r == r->main) { unparsed_uri = 1; - len += method.len + r->unparsed_uri.len; + len += r->unparsed_uri.len; } else { loc_len = (r->valid_location && ctx->vars.uri.len) ?