diff src/event/ngx_event_connect.c @ 561:e48ebafc6939 release-0.3.2

nginx-0.3.2-RELEASE import *) Feature: the Sun Studio 10 C compiler support. *) Feature: the "proxy_upstream_max_fails", "proxy_upstream_fail_timeout", "fastcgi_upstream_max_fails", and "fastcgi_upstream_fail_timeout" directives.
author Igor Sysoev <igor@sysoev.ru>
date Wed, 12 Oct 2005 13:50:36 +0000
parents 0148586012ab
children 9c2f3ed7a247
line wrap: on
line diff
--- a/src/event/ngx_event_connect.c
+++ b/src/event/ngx_event_connect.c
@@ -14,7 +14,7 @@ ngx_int_t
 ngx_event_connect_peer(ngx_peer_connection_t *pc)
 {
     int                rc;
-    ngx_uint_t         instance, level, i;
+    ngx_uint_t         level, i;
     u_int              event;
     time_t             now;
     ngx_err_t          err;
@@ -81,7 +81,7 @@ ngx_event_connect_peer(ngx_peer_connecti
         for ( ;; ) {
             peer = &pc->peers->peer[pc->cur_peer];
 
-            if (peer->fails <= peer->max_fails) {
+            if (peer->max_fails == 0 || peer->fails <= peer->max_fails) {
                 break;
             }
 
@@ -139,16 +139,6 @@ ngx_event_connect_peer(ngx_peer_connecti
         return NGX_ERROR;
     }
 
-    rev = c->read;
-    wev = c->write;
-
-    ngx_memzero(c, sizeof(ngx_connection_t));
-
-    c->read = rev;
-    c->write = wev;
-    c->fd = s;
-    c->log = pc->log;
-
     if (pc->rcvbuf) {
         if (setsockopt(s, SOL_SOCKET, SO_RCVBUF,
                        (const void *) &pc->rcvbuf, sizeof(int)) == -1) {
@@ -191,21 +181,8 @@ ngx_event_connect_peer(ngx_peer_connecti
         c->tcp_nodelay = NGX_TCP_NODELAY_DISABLED;
     }
 
-    instance = rev->instance;
-
-    ngx_memzero(rev, sizeof(ngx_event_t));
-    ngx_memzero(wev, sizeof(ngx_event_t));
-
-    rev->instance = !instance;
-    wev->instance = !instance;
-
-    rev->index = NGX_INVALID_INDEX;
-    wev->index = NGX_INVALID_INDEX;
-
-    rev->data = c;
-    wev->data = c;
-
-    wev->write = 1;
+    rev = c->read;
+    wev = c->write;
 
     rev->log = pc->log;
     wev->log = pc->log;
@@ -213,15 +190,15 @@ ngx_event_connect_peer(ngx_peer_connecti
     pc->connection = c;
 
     /*
-     * TODO: MT: - atomic increment (x86: lock xadd)
+     * TODO: MT: - ngx_atomic_fetch_add()
      *             or protection by critical section or mutex
      *
      * TODO: MP: - allocated in a shared memory
-     *           - atomic increment (x86: lock xadd)
+     *           - ngx_atomic_fetch_add()
      *             or protection by critical section or mutex
      */
 
-    c->number = ngx_atomic_inc(ngx_connection_counter);
+    c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
 
 #if (NGX_THREADS)
     rev->lock = pc->lock;