# HG changeset patch # User Maxim Dounin # Date 1450359555 -10800 # Node ID 78b4e10b4367b31367aad3c83c9c3acdd42397c4 # Parent ceeb1edb3018dc9ae7b83476c5dc0a01887740f2 Upstream: don't keep connections on early responses (ticket #669). diff -r ceeb1edb3018 -r 78b4e10b4367 src/http/modules/ngx_http_upstream_keepalive_module.c --- a/src/http/modules/ngx_http_upstream_keepalive_module.c Thu Dec 17 16:39:02 2015 +0300 +++ b/src/http/modules/ngx_http_upstream_keepalive_module.c Thu Dec 17 16:39:15 2015 +0300 @@ -302,6 +302,10 @@ goto invalid; } + if (!u->request_body_sent) { + goto invalid; + } + if (ngx_terminate || ngx_exiting) { goto invalid; } diff -r ceeb1edb3018 -r 78b4e10b4367 src/http/ngx_http_upstream.c --- a/src/http/ngx_http_upstream.c Thu Dec 17 16:39:02 2015 +0300 +++ b/src/http/ngx_http_upstream.c Thu Dec 17 16:39:15 2015 +0300 @@ -1441,6 +1441,7 @@ } u->request_sent = 0; + u->request_body_sent = 0; if (rc == NGX_AGAIN) { ngx_add_timer(c->write, u->conf->connect_timeout); @@ -1825,6 +1826,8 @@ /* rc == NGX_OK */ + u->request_body_sent = 1; + if (c->write->timer_set) { ngx_del_timer(c->write); } diff -r ceeb1edb3018 -r 78b4e10b4367 src/http/ngx_http_upstream.h --- a/src/http/ngx_http_upstream.h Thu Dec 17 16:39:02 2015 +0300 +++ b/src/http/ngx_http_upstream.h Thu Dec 17 16:39:15 2015 +0300 @@ -370,6 +370,7 @@ unsigned upgrade:1; unsigned request_sent:1; + unsigned request_body_sent:1; unsigned header_sent:1; };