]> 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)
commita7186c8f1ceef938b710509993719b93daff419a
tree4b5de6a4b9a20055c70b2d666778306c21adc883
parent1331a99f5c55cb1aff399000af56b17a43552e3f
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