comparison src/http/ngx_http_core_module.c @ 6920:8b7fd958c59f

Fixed background update with "if". Cloned subrequests should inherit r->content_handler. This way they will be able to use the same location configuration as the original request if there are "if" directives in the configuration. Without r->content_handler inherited, the following configuration tries to access a static file in the update request: location / { set $true 1; if ($true) { # nothing } proxy_pass http://backend; proxy_cache one; proxy_cache_use_stale updating; proxy_cache_background_update on; } See http://mailman.nginx.org/pipermail/nginx/2017-February/053019.html for initial report.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 27 Feb 2017 22:36:15 +0300
parents 1aeaae6e9446
children 39ff6939266e
comparison
equal deleted inserted replaced
6919:2cb489dbb628 6920:8b7fd958c59f
2569 if (flags & NGX_HTTP_SUBREQUEST_CLONE) { 2569 if (flags & NGX_HTTP_SUBREQUEST_CLONE) {
2570 sr->method = r->method; 2570 sr->method = r->method;
2571 sr->method_name = r->method_name; 2571 sr->method_name = r->method_name;
2572 sr->loc_conf = r->loc_conf; 2572 sr->loc_conf = r->loc_conf;
2573 sr->valid_location = r->valid_location; 2573 sr->valid_location = r->valid_location;
2574 sr->content_handler = r->content_handler;
2574 sr->phase_handler = r->phase_handler; 2575 sr->phase_handler = r->phase_handler;
2575 sr->write_event_handler = ngx_http_core_run_phases; 2576 sr->write_event_handler = ngx_http_core_run_phases;
2576 2577
2577 ngx_http_update_location_config(sr); 2578 ngx_http_update_location_config(sr);
2578 } 2579 }