]> git.kaiwu.me - nginx.git/commitdiff
Added r->response_sent flag.
authorRoman Arutyunyan <arut@nginx.com>
Thu, 30 Sep 2021 14:14:42 +0000 (17:14 +0300)
committerRoman Arutyunyan <arut@nginx.com>
Thu, 30 Sep 2021 14:14:42 +0000 (17:14 +0300)
The flag indicates that the entire response was sent to the socket up to the
last_buf flag.  The flag is only usable for protocol implementations that call
ngx_http_write_filter() from header filter, such as HTTP/1.x and HTTP/3.

src/http/ngx_http_request.h
src/http/ngx_http_write_filter_module.c

index aee9109c3f1adc6dfabe0425b20beb06a3f14497..a19e975b2288c489d8b69b2a383988265cef0f0f 100644 (file)
@@ -547,6 +547,7 @@ struct ngx_http_request_s {
     unsigned                          request_complete:1;
     unsigned                          request_output:1;
     unsigned                          header_sent:1;
+    unsigned                          response_sent:1;
     unsigned                          expect_tested:1;
     unsigned                          root_tested:1;
     unsigned                          done:1;
index 6a5d957b169f98d4dd7f06b53798c7305ea57652..2a499625119f4cc75865f04fd359306e7752061f 100644 (file)
@@ -239,6 +239,10 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
             r->out = NULL;
             c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
 
+            if (last) {
+                r->response_sent = 1;
+            }
+
             return NGX_OK;
         }
 
@@ -350,6 +354,10 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
 
     c->buffered &= ~NGX_HTTP_WRITE_BUFFERED;
 
+    if (last) {
+        r->response_sent = 1;
+    }
+
     if ((c->buffered & NGX_LOWLEVEL_BUFFERED) && r->postponed == NULL) {
         return NGX_AGAIN;
     }