From: Valentin Bartenev Date: Mon, 30 Sep 2013 20:00:57 +0000 (+0400) Subject: SPDY: fixed connection leak while waiting for request body. X-Git-Tag: release-1.5.6~4 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=6ba03097dbc592646303dacdf169b1162a119af7;p=nginx.git SPDY: fixed connection leak while waiting for request body. If an error occurs in a SPDY connection, the c->error flag is set on every fake request connection, and its read or write event handler is called, in order to finalize it. But while waiting for a request body, it was a no-op since the read event handler ngx_http_request_handler() calls r->read_event_handler that had been set to ngx_http_block_reading(). --- diff --git a/src/http/ngx_http_spdy.c b/src/http/ngx_http_spdy.c index e7bebccd5..a1ac18479 100644 --- a/src/http/ngx_http_spdy.c +++ b/src/http/ngx_http_spdy.c @@ -1214,6 +1214,7 @@ ngx_http_spdy_state_data(ngx_http_spdy_connection_t *sc, u_char *pos, } if (rb->post_handler) { + r->read_event_handler = ngx_http_block_reading; rb->post_handler(r); } } @@ -2607,6 +2608,9 @@ ngx_http_spdy_read_request_body(ngx_http_request_t *r, r->request_body->post_handler = post_handler; + r->read_event_handler = ngx_http_test_reading; + r->write_event_handler = ngx_http_request_empty_handler; + return NGX_AGAIN; }