]> git.kaiwu.me - nginx.git/commitdiff
HTTP/2: fixed stream finalization.
authorValentin Bartenev <vbart@nginx.com>
Wed, 29 Mar 2017 17:16:23 +0000 (20:16 +0300)
committerValentin Bartenev <vbart@nginx.com>
Wed, 29 Mar 2017 17:16:23 +0000 (20:16 +0300)
In order to finalize stream the error flag is set on fake connection and
either "write" or "read" event handler is called.  The read events of fake
connections are always ready, but it's not the case with the write events.

When the ready flag isn't set, the error flag can be not checked in some
cases and as a result stream isn't finalized.  Now the ready flag is
explicilty set on write events for proper finalization in all cases.

src/http/v2/ngx_http_v2.c

index ee9ceb0bddf222bdf5cf4d13f5bf8fa29962ef1c..714707b2c59223b908e5d97598aa245a6d83a015 100644 (file)
@@ -4266,7 +4266,10 @@ ngx_http_v2_finalize_connection(ngx_http_v2_connection_t *h2c,
 
             if (stream->queued) {
                 stream->queued = 0;
+
                 ev = fc->write;
+                ev->active = 0;
+                ev->ready = 1;
 
             } else {
                 ev = fc->read;