aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_core_module.c
diff options
context:
space:
mode:
authorRoman Arutyunyan <arut@nginx.com>2018-12-11 13:09:00 +0300
committerRoman Arutyunyan <arut@nginx.com>2018-12-11 13:09:00 +0300
commit746fba0d79c6909e9e09b4d1cb9ddbf052ab545e (patch)
tree3d0fb8a6a475c69bab1971030fe52142523f54bb /src/http/ngx_http_core_module.c
parent7b7f7c1458a66d2ed53e547a2efa775b04034f89 (diff)
downloadnginx-746fba0d79c6909e9e09b4d1cb9ddbf052ab545e.tar.gz
nginx-746fba0d79c6909e9e09b4d1cb9ddbf052ab545e.zip
Copy regex unnamed captures to cloned subrequests.
Previously, unnamed regex captures matched in the parent request, were not available in a cloned subrequest. Now 3 fields related to unnamed captures are copied to a cloned subrequest: r->ncaptures, r->captures and r->captures_data. Since r->captures cannot be changed by either request after creating a clone, a new flag r->realloc_captures is introduced to force reallocation of r->captures. The issue was reported as a proxy_cache_background_update misbehavior in http://mailman.nginx.org/pipermail/nginx/2018-December/057251.html.
Diffstat (limited to 'src/http/ngx_http_core_module.c')
-rw-r--r--src/http/ngx_http_core_module.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index c57ec00ce..5e7152f0f 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2386,6 +2386,14 @@ ngx_http_subrequest(ngx_http_request_t *r,
sr->phase_handler = r->phase_handler;
sr->write_event_handler = ngx_http_core_run_phases;
+#if (NGX_PCRE)
+ sr->ncaptures = r->ncaptures;
+ sr->captures = r->captures;
+ sr->captures_data = r->captures_data;
+ sr->realloc_captures = 1;
+ r->realloc_captures = 1;
+#endif
+
ngx_http_update_location_config(sr);
}