[nginx] HTTP/2: reuse of connections with incomplete frames.

Maxim Dounin mdounin at mdounin.ru
Thu Feb 11 19:57:24 UTC 2021


details:   https://hg.nginx.org/nginx/rev/fc536dcdbbf7
branches:  
changeset: 7768:fc536dcdbbf7
user:      Maxim Dounin <mdounin at mdounin.ru>
date:      Thu Feb 11 21:52:12 2021 +0300
description:
HTTP/2: reuse of connections with incomplete frames.

Prodded by Taewoo Kim.

diffstat:

 src/http/v2/ngx_http_v2.c |  8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diffs (32 lines):

diff -r 6d98f29867e8 -r fc536dcdbbf7 src/http/v2/ngx_http_v2.c
--- a/src/http/v2/ngx_http_v2.c	Thu Feb 11 21:52:11 2021 +0300
+++ b/src/http/v2/ngx_http_v2.c	Thu Feb 11 21:52:12 2021 +0300
@@ -362,6 +362,11 @@ ngx_http_v2_read_handler(ngx_event_t *re
             return;
         }
 
+        if (!h2c->processing && !h2c->pushing) {
+            ngx_http_v2_finalize_connection(h2c, NGX_HTTP_V2_NO_ERROR);
+            return;
+        }
+
         if (!h2c->goaway) {
             h2c->goaway = 1;
 
@@ -668,6 +673,8 @@ ngx_http_v2_handle_connection(ngx_http_v
         return;
     }
 
+    ngx_reusable_connection(c, 1);
+
     h2scf = ngx_http_get_module_srv_conf(h2c->http_connection->conf_ctx,
                                          ngx_http_v2_module);
     if (h2c->state.incomplete) {
@@ -689,7 +696,6 @@ ngx_http_v2_handle_connection(ngx_http_v
 #endif
 
     c->destroyed = 1;
-    ngx_reusable_connection(c, 1);
 
     c->write->handler = ngx_http_empty_handler;
     c->read->handler = ngx_http_v2_idle_handler;


More information about the nginx-devel mailing list