Mercurial > hg > nginx
diff src/http/modules/proxy/ngx_http_proxy_handler.c @ 313:98f1a8028067
nginx-0.0.3-2004-04-13-19:08:48 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 13 Apr 2004 15:08:48 +0000 |
parents | f5431a4bbc7d |
children | 39b6f2df45c0 |
line wrap: on
line diff
--- 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_connect 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_connect 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 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); } }