Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/ngx_event_accept.c')
-rw-r--r--src/event/ngx_event_accept.c41
1 files changed, 9 insertions, 32 deletions
diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c
index 4df9dc611..238a49415 100644
--- a/src/event/ngx_event_accept.c
+++ b/src/event/ngx_event_accept.c
@@ -22,7 +22,6 @@ ngx_event_accept(ngx_event_t *ev)
socklen_t sl;
ngx_err_t err;
ngx_log_t *log;
- ngx_uint_t instance;
ngx_socket_t s;
ngx_event_t *rev, *wev;
ngx_listening_t *ls;
@@ -76,8 +75,8 @@ ngx_event_accept(ngx_event_t *ev)
}
#if (NGX_STAT_STUB)
- ngx_atomic_inc(ngx_stat_accepted);
- ngx_atomic_inc(ngx_stat_active);
+ ngx_atomic_fetch_add(ngx_stat_accepted, 1);
+ ngx_atomic_fetch_add(ngx_stat_active, 1);
#endif
ngx_accept_disabled = NGX_ACCEPT_THRESHOLD
@@ -94,16 +93,6 @@ ngx_event_accept(ngx_event_t *ev)
return;
}
- rev = c->read;
- wev = c->write;
-
- ngx_memzero(c, sizeof(ngx_connection_t));
-
- c->read = rev;
- c->write = wev;
- c->fd = s;
- c->log = ev->log;
-
c->pool = ngx_create_pool(ls->pool_size, ev->log);
if (c->pool == NULL) {
ngx_close_accepted_connection(c);
@@ -164,21 +153,9 @@ ngx_event_accept(ngx_event_t *ev)
c->ctx = lc->ctx;
c->servers = lc->servers;
- 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;
+ rev = c->read;
+ wev = c->write;
- wev->write = 1;
wev->ready = 1;
if (ngx_event_flags & (NGX_USE_AIO_EVENT|NGX_USE_RTSIG_EVENT)) {
@@ -197,18 +174,18 @@ ngx_event_accept(ngx_event_t *ev)
wev->log = log;
/*
- * TODO: MT: - atomic increment (x86: lock xadd)
+ * TODO: MT: - ngx_atomic_fetch_add()
* or protection by critical section or light mutex
*
* TODO: MP: - allocated in a shared memory
- * - atomic increment (x86: lock xadd)
+ * - ngx_atomic_fetch_add()
* or protection by critical section or light mutex
*/
- c->number = ngx_atomic_inc(ngx_connection_counter);
+ c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
#if (NGX_STAT_STUB)
- ngx_atomic_inc(ngx_stat_handled);
+ ngx_atomic_fetch_add(ngx_stat_handled, 1);
#endif
#if (NGX_THREADS)
@@ -391,7 +368,7 @@ ngx_close_accepted_connection(ngx_connection_t *c)
}
#if (NGX_STAT_STUB)
- ngx_atomic_dec(ngx_stat_active);
+ ngx_atomic_fetch_add(ngx_stat_active, -1);
#endif
}