# HG changeset patch # User Maxim Dounin # Date 1329147188 0 # Node ID b19a651471d983fb2ddc13714f28d31e6c8cadd8 # Parent d9bf6caf03714ec58aef1f2b6be166cc93e7442c Core: protection from subrequest loops. Without the protection, subrequest loop results in r->count overflow and SIGSEGV. Protection was broken in 0.7.25. Note that this also limits number of parallel subrequests. This wasn't exactly the case before 0.7.25 as local subrequests were completed directly. See here for details: http://nginx.org/pipermail/nginx-ru/2010-February/032184.html diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -2453,7 +2453,6 @@ ngx_http_subrequest(ngx_http_request_t * sr->start_sec = tp->sec; sr->start_msec = tp->msec; - r->main->subrequests++; r->main->count++; *psr = sr; diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -2010,6 +2010,7 @@ ngx_http_finalize_request(ngx_http_reque if (r == c->data) { r->main->count--; + r->main->subrequests++; if (!r->logged) {