]> git.kaiwu.me - nginx.git/commit
Upstream: fixed tcp_nopush with gRPC.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 2 Jul 2018 16:03:04 +0000 (19:03 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 2 Jul 2018 16:03:04 +0000 (19:03 +0300)
commit69fc41c9b5fc07084ff3870e2edeb9cef7f09f97
tree680f8163fa394c22078eefbbfbf558da1284552f
parenta60bdcd8236919ced645115025d5cadaab295463
Upstream: fixed tcp_nopush with gRPC.

With gRPC it is possible that a request sending is blocked due to flow
control.  Moreover, further sending might be only allowed once the
backend sees all the data we've already sent.  With such a backend
it is required to clear the TCP_NOPUSH socket option to make sure all
the data we've sent are actually delivered to the backend.

As such, we now clear TCP_NOPUSH in ngx_http_upstream_send_request()
also on NGX_AGAIN if c->write->ready is set.  This fixes a test (which
waits for all the 64k bytes as per initial window before allowing more
bytes) with sendfile enabled when the body was written to a file
in a different context.
src/http/ngx_http_upstream.c