summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2017-03-29 20:16:23 +0300
committerValentin Bartenev <vbart@nginx.com>2017-03-29 20:16:23 +0300
commite82559826625d742316a625eebdee203e6506e10 (patch)
tree96d75993512f9d5b606673ca287feb0a1a5000a0
parent239e5ac0638a1dcac154ba870a7d124cd00413f6 (diff)
downloadnginx-e82559826625d742316a625eebdee203e6506e10.tar.gz
nginx-e82559826625d742316a625eebdee203e6506e10.tar.bz2
HTTP/2: fixed stream finalization.
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.
-rw-r--r--src/http/v2/ngx_http_v2.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c
index ee9ceb0bd..714707b2c 100644
--- a/src/http/v2/ngx_http_v2.c
+++ b/src/http/v2/ngx_http_v2.c
@@ -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;