]> git.kaiwu.me - nginx.git/commitdiff
Simplified subrequest finalization.
authorRoman Arutyunyan <arut@nginx.com>
Fri, 28 Feb 2020 16:54:13 +0000 (19:54 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Fri, 28 Feb 2020 16:54:13 +0000 (19:54 +0300)
Now it looks similar to what it was before background subrequests were
introduced in 9552758a786e.

src/http/ngx_http_request.c

index 5fcaa2c33e5d3f8c27405908f7cc7841e4a5cfc3..eb53996b1823aa249981d41fabea485cb4b826ef 100644 (file)
@@ -2488,7 +2488,6 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
     }
 
     if (r != r->main) {
-        clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
 
         if (r->buffered || r->postponed) {
 
@@ -2499,32 +2498,14 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
             return;
         }
 
-        if (r->background) {
-            if (!r->logged) {
-                if (clcf->log_subrequest) {
-                    ngx_http_log_request(r);
-                }
-
-                r->logged = 1;
-
-            } else {
-                ngx_log_error(NGX_LOG_ALERT, c->log, 0,
-                              "subrequest: \"%V?%V\" logged again",
-                              &r->uri, &r->args);
-            }
-
-            r->done = 1;
-            ngx_http_finalize_connection(r);
-            return;
-        }
-
         pr = r->parent;
 
-        if (r == c->data) {
-
-            r->main->count--;
+        if (r == c->data || r->background) {
 
             if (!r->logged) {
+
+                clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
                 if (clcf->log_subrequest) {
                     ngx_http_log_request(r);
                 }
@@ -2539,6 +2520,13 @@ ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
 
             r->done = 1;
 
+            if (r->background) {
+                ngx_http_finalize_connection(r);
+                return;
+            }
+
+            r->main->count--;
+
             if (pr->postponed && pr->postponed->request == r) {
                 pr->postponed = pr->postponed->next;
             }