From: Maxim Dounin Date: Fri, 16 Nov 2012 18:29:19 +0000 (+0000) Subject: Upstream: better detection of connect() failures with kqueue. X-Git-Tag: release-1.3.9~25 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=e1d5455a74521a01a37579fb925ffa7fbe06f57f;p=nginx.git Upstream: better detection of connect() failures with kqueue. Pending EOF might be reported on both read and write events, whichever comes first, so check both of them. Patch by Yichun Zhang (agentzh), slightly modified. --- diff --git a/src/http/ngx_http_upstream.c b/src/http/ngx_http_upstream.c index 75ef64e55..9a9bfc000 100644 --- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -1809,9 +1809,16 @@ ngx_http_upstream_test_connect(ngx_connection_t *c) #if (NGX_HAVE_KQUEUE) if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) { - if (c->write->pending_eof) { + if (c->write->pending_eof || c->read->pending_eof) { + if (c->write->pending_eof) { + err = c->write->kq_errno; + + } else { + err = c->read->kq_errno; + } + c->log->action = "connecting to upstream"; - (void) ngx_connection_error(c, c->write->kq_errno, + (void) ngx_connection_error(c, err, "kevent() reported that connect() failed"); return NGX_ERROR; }