Event pipe: process data after recv_chain() errors.
When c->recv_chain() returns an error, it is possible that we already have some data previously read, e.g., in preread buffer. And in some cases it may be even a complete response. Changed c->recv_chain() error handling to process the data, much like it is already done if kevent reports about an error. This change, in particular, fixes processing of small responses when an upstream fails to properly close a connection with lingering and therefore the connection is reset, but the response is already fully obtained by nginx (see ticket #1037).
This commit is contained in:
parent
9c0040b43c
commit
7ee778693e
1 changed files with 1 additions and 1 deletions
|
@ -300,7 +300,7 @@ ngx_event_pipe_read_upstream(ngx_event_pipe_t *p)
|
|||
|
||||
if (n == NGX_ERROR) {
|
||||
p->upstream_error = 1;
|
||||
return NGX_ERROR;
|
||||
break;
|
||||
}
|
||||
|
||||
if (n == NGX_AGAIN) {
|
||||
|
|
Loading…
Reference in a new issue