From 3d54061602b20fa5a6fdf55b11cb333285d61d03 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Tue, 13 Apr 2004 15:08:48 +0000 Subject: nginx-0.0.3-2004-04-13-19:08:48 import --- src/http/modules/proxy/ngx_http_proxy_handler.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'src/http/modules/proxy/ngx_http_proxy_handler.c') diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c index 017d7c8d0..0fd89c139 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.c +++ b/src/http/modules/proxy/ngx_http_proxy_handler.c @@ -425,7 +425,9 @@ void ngx_http_proxy_check_broken_connection(ngx_event_t *ev) n = recv(c->fd, buf, 1, MSG_PEEK); - if (ev->write && n >= 0) { + err = ngx_socket_errno; + + if (ev->write && (n >= 0 || err == NGX_EAGAIN)) { return; } @@ -443,7 +445,6 @@ void ngx_http_proxy_check_broken_connection(ngx_event_t *ev) ev->eof = 1; if (n == -1) { - err = ngx_socket_errno; if (err == NGX_EAGAIN) { return; } @@ -634,11 +635,11 @@ void ngx_http_proxy_close_connection(ngx_http_proxy_ctx_t *p) ngx_del_conn(c, NGX_CLOSE_EVENT); } else { - if (c->read->active) { + if (c->read->active || c->read->posted) { ngx_del_event(c->read, NGX_READ_EVENT, NGX_CLOSE_EVENT); } - if (c->write->active) { + if (c->write->active || c->read->posted) { ngx_del_event(c->write, NGX_WRITE_EVENT, NGX_CLOSE_EVENT); } } -- cgit