[nginx] svn commit: r4916 - trunk/src/http

mdounin at mdounin.ru mdounin at mdounin.ru
Fri Nov 16 18:29:19 UTC 2012


Author: mdounin
Date: 2012-11-16 18:29:19 +0000 (Fri, 16 Nov 2012)
New Revision: 4916
URL: http://trac.nginx.org/nginx/changeset/4916/nginx

Log:
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.


Modified:
   trunk/src/http/ngx_http_upstream.c

Modified: trunk/src/http/ngx_http_upstream.c
===================================================================
--- trunk/src/http/ngx_http_upstream.c	2012-11-16 12:18:05 UTC (rev 4915)
+++ trunk/src/http/ngx_http_upstream.c	2012-11-16 18:29:19 UTC (rev 4916)
@@ -1809,9 +1809,16 @@
 #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;
         }



More information about the nginx-devel mailing list