]> git.kaiwu.me - nginx.git/commit
Upstream: no last buffer on errors.
authorMaxim Dounin <mdounin@mdounin.ru>
Thu, 25 Jul 2013 11:00:41 +0000 (15:00 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Thu, 25 Jul 2013 11:00:41 +0000 (15:00 +0400)
commit5274f023a243e4163bcdb1b93e00445e769a8ff9
treeeba84a5bcf52540362682265f9198ebc6a4962b3
parent78aacc838bac5c92fe92f8533526515766cfce15
Upstream: no last buffer on errors.

Previously, after sending a header we always sent a last buffer and
finalized a request with code 0, even in case of errors.  In some cases
this resulted in a loss of ability to detect the response wasn't complete
(e.g. if Content-Length was removed from a response by gzip filter).

This change tries to propogate to a client information that a response
isn't complete in such cases.  In particular, with this change we no longer
pretend a returned response is complete if we wasn't able to create
a temporary file.

If an error code suggests the error wasn't fatal, we flush buffered data
and disable keepalive, then finalize request normally.  This allows to to
propogate information about a problem to a client, while still sending all
the data we've got from an upstream.
src/http/ngx_http_upstream.c