aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorValentin Bartenev <vbart@nginx.com>2013-12-10 20:27:33 +0400
committerValentin Bartenev <vbart@nginx.com>2013-12-10 20:27:33 +0400
commit7f54528ca07e49abd83d8c86c8125202dcf2798c (patch)
tree7a65f486239dc9a73658cb492a3f039bc70dea84 /src
parentfa512fdb7650b48826ef49754328980a6e357c9a (diff)
downloadnginx-7f54528ca07e49abd83d8c86c8125202dcf2798c.tar.gz
nginx-7f54528ca07e49abd83d8c86c8125202dcf2798c.zip
SPDY: drop the "delayed" flag when finalizing connection.
This flag in SPDY fake write events serves the same purposes as the "ready" flag in real events, and it must be dropped if request needs to be handled. Otherwise, it can prevent the request from finalization if ngx_http_writer() was set, which results in a connection leak. Found by Xiaochen Wang.
Diffstat (limited to 'src')
-rw-r--r--src/http/ngx_http_spdy.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/http/ngx_http_spdy.c b/src/http/ngx_http_spdy.c
index 36e23be02..2346ad7a1 100644
--- a/src/http/ngx_http_spdy.c
+++ b/src/http/ngx_http_spdy.c
@@ -2855,7 +2855,9 @@ ngx_http_spdy_finalize_connection(ngx_http_spdy_connection_t *sc,
if (stream->waiting) {
r->blocked -= stream->waiting;
stream->waiting = 0;
+
ev = fc->write;
+ ev->delayed = 0;
} else {
ev = fc->read;