diff options
author | Roman Arutyunyan <arut@nginx.com> | 2017-02-10 16:33:12 +0300 |
---|---|---|
committer | Roman Arutyunyan <arut@nginx.com> | 2017-02-10 16:33:12 +0300 |
commit | b9a031622b7bf586a9c724dade16abfac188f2f2 (patch) | |
tree | 5ab772e2d0b36782047cc14e469dd6d47edbcda0 | |
parent | 3e4339eacd35084afae67826295b29ae7ad73dc5 (diff) |
Slice filter: fetch slices in cloned subrequests.
Previously, slice subrequest location was selected based on request URI.
If request is then redirected to a new location, its context array is cleared,
making the slice module loose current slice range information. This lead to
broken output. Now subrequests with the NGX_HTTP_SUBREQUEST_CLONE flag are
created for slices. Such subrequests stay in the same location as the parent
request and keep the right slice context.
-rw-r--r-- | src/http/modules/ngx_http_slice_filter_module.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/http/modules/ngx_http_slice_filter_module.c b/src/http/modules/ngx_http_slice_filter_module.c index 5e149b4c1..200593959 100644 --- a/src/http/modules/ngx_http_slice_filter_module.c +++ b/src/http/modules/ngx_http_slice_filter_module.c @@ -244,7 +244,10 @@ ngx_http_slice_body_filter(ngx_http_request_t *r, ngx_chain_t *in) return rc; } - if (ngx_http_subrequest(r, &r->uri, &r->args, &sr, NULL, 0) != NGX_OK) { + if (ngx_http_subrequest(r, &r->uri, &r->args, &sr, NULL, + NGX_HTTP_SUBREQUEST_CLONE) + != NGX_OK) + { return NGX_ERROR; } |