comparison src/http/ngx_http_core_module.c @ 7168:46ebff8c6396

Inherit valid_unparsed_uri in cloned subrequests (ticket #1430). Inheriting this flag will make the cloned subrequest behave consistently with the parent. Specifically, the upstream HTTP request and cache key created by the proxy module may depend directly on unparsed_uri if valid_unparsed_uri flag is set. Previously, the flag was zero for cloned requests, which could make background update proxy a request different than its parent and cache the result with a different key. For example, if client URI contained the escaped slash character %2F, it was used as is by the proxy module in the main request, but was unescaped in the subrequests. Similar problems exist in the slice module.
author Roman Arutyunyan <arut@nginx.com>
date Mon, 20 Nov 2017 21:11:19 +0300
parents cce6936ed2f4
children 20f139e9ffa8
comparison
equal deleted inserted replaced
7167:8530aea9aa50 7168:46ebff8c6396
2361 if (flags & NGX_HTTP_SUBREQUEST_CLONE) { 2361 if (flags & NGX_HTTP_SUBREQUEST_CLONE) {
2362 sr->method = r->method; 2362 sr->method = r->method;
2363 sr->method_name = r->method_name; 2363 sr->method_name = r->method_name;
2364 sr->loc_conf = r->loc_conf; 2364 sr->loc_conf = r->loc_conf;
2365 sr->valid_location = r->valid_location; 2365 sr->valid_location = r->valid_location;
2366 sr->valid_unparsed_uri = r->valid_unparsed_uri;
2366 sr->content_handler = r->content_handler; 2367 sr->content_handler = r->content_handler;
2367 sr->phase_handler = r->phase_handler; 2368 sr->phase_handler = r->phase_handler;
2368 sr->write_event_handler = ngx_http_core_run_phases; 2369 sr->write_event_handler = ngx_http_core_run_phases;
2369 2370
2370 ngx_http_update_location_config(sr); 2371 ngx_http_update_location_config(sr);