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.
This commit is contained in:
Valentin Bartenev 2014-01-14 16:24:45 +04:00
parent 1c56e18733
commit 3d5f501adc

View File

@ -635,6 +635,7 @@ ngx_http_spdy_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
if (in == NULL || r->header_only) {
if (stream->queued) {
fc->write->delayed = 1;
return NGX_AGAIN;
}