diff options
| author | Valentin Bartenev <vbart@nginx.com> | 2016-07-19 20:31:09 +0300 |
|---|---|---|
| committer | Valentin Bartenev <vbart@nginx.com> | 2016-07-19 20:31:09 +0300 |
| commit | 3b2f54bc2ea0d9d34b3e181f1221a050824e1c1a (patch) | |
| tree | 75974dd849b6ed2d22a6bd1c8e8eaaf61ff80a9d | |
| parent | ce6eb33d15f1efd3c418ce7688ed6de3af81cae9 (diff) | |
| download | nginx-3b2f54bc2ea0d9d34b3e181f1221a050824e1c1a.tar.gz nginx-3b2f54bc2ea0d9d34b3e181f1221a050824e1c1a.tar.bz2 | |
HTTP/2: fixed send timer handling.
Checking for return value of c->send_chain() isn't sufficient since there
are data can be left in the SSL buffer. Now the wew->ready flag is used
instead.
In particular, this fixed a connection leak in cases when all streams were
closed, but there's still some data to be sent in the SSL buffer and the
client forgot about the connection.
| -rw-r--r-- | src/http/v2/ngx_http_v2.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/http/v2/ngx_http_v2.c b/src/http/v2/ngx_http_v2.c index 959e3a6f3..0ce8bce26 100644 --- a/src/http/v2/ngx_http_v2.c +++ b/src/http/v2/ngx_http_v2.c @@ -549,7 +549,7 @@ ngx_http_v2_send_output_queue(ngx_http_v2_connection_t *h2c) c->tcp_nodelay = NGX_TCP_NODELAY_SET; } - if (cl) { + if (!wev->ready) { ngx_add_timer(wev, clcf->send_timeout); } else { |
