]> git.kaiwu.me - nginx.git/commit
Fixed premature background subrequest finalization.
authorDmitry Volyntsev <xeioex@nginx.com>
Mon, 2 Mar 2020 17:07:36 +0000 (20:07 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Mon, 2 Mar 2020 17:07:36 +0000 (20:07 +0300)
commit3733c6fd70a9e9ce64901982621629a8cfcc66a8
tree0d11cb60703a3b65e26b575edb178d7f45ef8093
parent6ba18bc35ee1bdf95130ee653adf451928ae8b74
Fixed premature background subrequest finalization.

When "aio" or "aio threads" is used while processing the response body of an
in-memory background subrequest, the subrequest could be finalized with an aio
operation still in progress.  Upon aio completion either parent request is
woken or the old r->write_event_handler is called again.  The latter may result
in request errors.  In either case post_subrequest handler is never called with
the full response body, which is typically expected when using in-memory
subrequests.

Currently in nginx background subrequests are created by the upstream module
and the mirror module.  The issue does not manifest itself with these
subrequests because they are header-only.  But it can manifest itself with
third-party modules which create in-memory background subrequests.
src/http/ngx_http_request.c