Welcome! Log In Create A New Profile

Advanced

[nginx] Event pipe: process data after recv_chain() errors.

Maxim Dounin
September 01, 2016 11:32AM
details: http://hg.nginx.org/nginx/rev/0fa883e92895
branches:
changeset: 6672:0fa883e92895
user: Maxim Dounin <mdounin@mdounin.ru>
date: Thu Sep 01 18:29:55 2016 +0300
description:
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).

diffstat:

src/event/ngx_event_pipe.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diffs (12 lines):

diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c
--- a/src/event/ngx_event_pipe.c
+++ b/src/event/ngx_event_pipe.c
@@ -300,7 +300,7 @@ ngx_event_pipe_read_upstream(ngx_event_p

if (n == NGX_ERROR) {
p->upstream_error = 1;
- return NGX_ERROR;
+ break;
}

if (n == NGX_AGAIN) {

_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Event pipe: process data after recv_chain() errors.

Maxim Dounin 560 September 01, 2016 11:32AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 151
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready