Mercurial > hg > nginx
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 } |