]> git.kaiwu.me - nginx.git/commit
Upstream: avoid duplicate finalization.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 2 Mar 2015 18:44:32 +0000 (21:44 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 2 Mar 2015 18:44:32 +0000 (21:44 +0300)
commit2b032e8df6f6a97454d4c4fc73ea9c5e86fca97c
tree334a0ab5e0d3230c1cf779e6791af987c87ab4d9
parent46a2236f226d7a68a6e830b8fd2c618c12bf4ca9
Upstream: avoid duplicate finalization.

A request may be already finalized when ngx_http_upstream_finalize_request()
is called, due to filter finalization: after filter finalization upstream
can be finalized via ngx_http_upstream_cleanup(), either from
ngx_http_terminate_request(), or because a new request was initiated
to an upstream.  Then the upstream code will see an error returned from
the filter chain and will call the ngx_http_upstream_finalize_request()
function again.

To prevent corruption of various upstream data in this situation, make sure
to do nothing but merely call ngx_http_finalize_request().

Prodded by Yichun Zhang, for details see the thread at
http://nginx.org/pipermail/nginx-devel/2015-February/006539.html.
src/http/ngx_http_upstream.c