]> git.kaiwu.me - nginx.git/commitdiff
Fixed background update with "if".
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 27 Feb 2017 19:36:15 +0000 (22:36 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 27 Feb 2017 19:36:15 +0000 (22:36 +0300)
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.

src/http/ngx_http_core_module.c

index 9e128908aec4fb9414bbbe12b13b43c02d770517..6e31a2ade6b4c848d6e08f867c18ab2086fea47f 100644 (file)
@@ -2571,6 +2571,7 @@ ngx_http_subrequest(ngx_http_request_t *r,
         sr->method_name = r->method_name;
         sr->loc_conf = r->loc_conf;
         sr->valid_location = r->valid_location;
+        sr->content_handler = r->content_handler;
         sr->phase_handler = r->phase_handler;
         sr->write_event_handler = ngx_http_core_run_phases;