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 }