diff -ur nginx-1.0.15/src/http/ngx_http_upstream.c nginx-1.0.15-patched/src/http/ngx_http_upstream.c --- nginx-1.0.15/src/http/ngx_http_upstream.c 2011-12-14 02:34:34.000000000 +0800 +++ nginx-1.0.15-patched/src/http/ngx_http_upstream.c 2012-03-21 21:20:17.333111806 +0800 @@ -1385,6 +1385,8 @@ /* rc == NGX_OK */ + u->request_all_sent = 1; + if (c->tcp_nopush == NGX_TCP_NOPUSH_SET) { if (ngx_tcp_push(c->fd) == NGX_ERROR) { ngx_log_error(NGX_LOG_CRIT, c->log, ngx_socket_errno, @@ -1451,7 +1453,7 @@ #endif - if (u->header_sent) { + if (u->request_all_sent) { u->write_event_handler = ngx_http_upstream_dummy_handler; (void) ngx_handle_write_event(c->write, 0); diff -ur nginx-1.0.15/src/http/ngx_http_upstream.h nginx-1.0.15-patched/src/http/ngx_http_upstream.h --- nginx-1.0.15/src/http/ngx_http_upstream.h 2011-11-01 22:18:10.000000000 +0800 +++ nginx-1.0.15-patched/src/http/ngx_http_upstream.h 2012-03-21 21:18:21.041237173 +0800 @@ -313,6 +313,7 @@ unsigned buffering:1; unsigned request_sent:1; + unsigned request_all_sent:1; unsigned header_sent:1; };