Mercurial > hg > nginx
comparison src/http/ngx_http_variables.c @ 7427:81d49f85afed
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.
author | Roman Arutyunyan <arut@nginx.com> |
---|---|
date | Tue, 11 Dec 2018 13:09:00 +0300 |
parents | 0b1eb40de6da |
children | c19ca381b2e6 |
comparison
equal
deleted
inserted
replaced
7426:4722b4b8aa93 | 7427:81d49f85afed |
---|---|
2502 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); | 2502 cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); |
2503 | 2503 |
2504 if (re->ncaptures) { | 2504 if (re->ncaptures) { |
2505 len = cmcf->ncaptures; | 2505 len = cmcf->ncaptures; |
2506 | 2506 |
2507 if (r->captures == NULL) { | 2507 if (r->captures == NULL || r->realloc_captures) { |
2508 r->realloc_captures = 0; | |
2509 | |
2508 r->captures = ngx_palloc(r->pool, len * sizeof(int)); | 2510 r->captures = ngx_palloc(r->pool, len * sizeof(int)); |
2509 if (r->captures == NULL) { | 2511 if (r->captures == NULL) { |
2510 return NGX_ERROR; | 2512 return NGX_ERROR; |
2511 } | 2513 } |
2512 } | 2514 } |