changeset 6237:06e850859a26

Limit recursive subrequests instead of simultaneous.
author Valentin Bartenev <vbart@nginx.com>
date Sun, 23 Aug 2015 21:03:32 +0300
parents b48663791c17
children 8c6e71722aff
files src/http/ngx_http_core_module.c src/http/ngx_http_request.c
diffstat 2 files changed, 2 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -2427,12 +2427,9 @@ ngx_http_subrequest(ngx_http_request_t *
     ngx_http_core_srv_conf_t      *cscf;
     ngx_http_postponed_request_t  *pr, *p;
 
-    r->main->subrequests--;
-
-    if (r->main->subrequests == 0) {
+    if (r->subrequests == 0) {
         ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
                       "subrequests cycle while processing \"%V\"", uri);
-        r->main->subrequests = 1;
         return NGX_ERROR;
     }
 
@@ -2537,6 +2534,7 @@ ngx_http_subrequest(ngx_http_request_t *
     sr->main_filter_need_in_memory = r->main_filter_need_in_memory;
 
     sr->uri_changes = NGX_HTTP_MAX_URI_CHANGES + 1;
+    sr->subrequests = r->subrequests - 1;
 
     tp = ngx_timeofday();
     sr->start_sec = tp->sec;
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -2338,7 +2338,6 @@ ngx_http_finalize_request(ngx_http_reque
         if (r == c->data) {
 
             r->main->count--;
-            r->main->subrequests++;
 
             if (!r->logged) {