if client closes a connection prematurely, then epoll (at least
in Linux 2.6.16) sends EPOLLERR|EPOLLHUP|EPOLLIN only and writer
does not know about the error
diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c
index b366f79..c2e18b6 100644
--- a/src/http/ngx_http_request.c
+++ b/src/http/ngx_http_request.c
@@ -1653,6 +1653,7 @@
r->http_state = NGX_HTTP_WRITING_REQUEST_STATE;
+ r->read_event_handler = ngx_http_block_read;
r->write_event_handler = ngx_http_writer;
wev = r->connection->write;