[nginx] SPDY: fixed possible premature close of stream.

Valentin Bartenev vbart at nginx.com
Tue Jan 14 12:58:05 UTC 2014


details:   http://hg.nginx.org/nginx/rev/9fffc0c46e5c
branches:  
changeset: 5512:9fffc0c46e5c
user:      Valentin Bartenev <vbart at nginx.com>
date:      Tue Jan 14 16:24:45 2014 +0400
description:
SPDY: fixed possible premature close of stream.

The "delayed" flag always should be set if there are unsent frames,
but this might not be the case if ngx_http_spdy_body_filter() was
called with NULL chain.

As a result, the "send_timeout" timer could be set on a stream in
ngx_http_writer().  And if the timeout occurred before all the stream
data has been sent, then the request was finalized with the "client
timed out" error.

diffstat:

 src/http/ngx_http_spdy_filter_module.c |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (11 lines):

diff -r dfb52d25cefb -r 9fffc0c46e5c src/http/ngx_http_spdy_filter_module.c
--- a/src/http/ngx_http_spdy_filter_module.c	Tue Jan 14 16:24:45 2014 +0400
+++ b/src/http/ngx_http_spdy_filter_module.c	Tue Jan 14 16:24:45 2014 +0400
@@ -635,6 +635,7 @@ ngx_http_spdy_body_filter(ngx_http_reque
     if (in == NULL || r->header_only) {
 
         if (stream->queued) {
+            fc->write->delayed = 1;
             return NGX_AGAIN;
         }
 



More information about the nginx-devel mailing list