mirror of
https://github.com/nginx/nginx.git
synced 2024-12-12 02:09:04 +08:00
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().
This commit is contained in:
parent
ef8c64acbe
commit
6ba03097db
@ -1214,6 +1214,7 @@ ngx_http_spdy_state_data(ngx_http_spdy_connection_t *sc, u_char *pos,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (rb->post_handler) {
|
if (rb->post_handler) {
|
||||||
|
r->read_event_handler = ngx_http_block_reading;
|
||||||
rb->post_handler(r);
|
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->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;
|
return NGX_AGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user