comparison src/event/ngx_event_accept.c @ 110:dad2fe8ecf08 NGINX_0_3_2

nginx 0.3.2 *) 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 <http://sysoev.ru>
date Wed, 12 Oct 2005 00:00:00 +0400
parents 45945fa8b8ba
children d25a1d6034f1
comparison
equal deleted inserted replaced
109:97da525033a1 110:dad2fe8ecf08
20 ngx_event_accept(ngx_event_t *ev) 20 ngx_event_accept(ngx_event_t *ev)
21 { 21 {
22 socklen_t sl; 22 socklen_t sl;
23 ngx_err_t err; 23 ngx_err_t err;
24 ngx_log_t *log; 24 ngx_log_t *log;
25 ngx_uint_t instance;
26 ngx_socket_t s; 25 ngx_socket_t s;
27 ngx_event_t *rev, *wev; 26 ngx_event_t *rev, *wev;
28 ngx_listening_t *ls; 27 ngx_listening_t *ls;
29 ngx_connection_t *c, *lc; 28 ngx_connection_t *c, *lc;
30 ngx_event_conf_t *ecf; 29 ngx_event_conf_t *ecf;
74 73
75 return; 74 return;
76 } 75 }
77 76
78 #if (NGX_STAT_STUB) 77 #if (NGX_STAT_STUB)
79 ngx_atomic_inc(ngx_stat_accepted); 78 ngx_atomic_fetch_add(ngx_stat_accepted, 1);
80 ngx_atomic_inc(ngx_stat_active); 79 ngx_atomic_fetch_add(ngx_stat_active, 1);
81 #endif 80 #endif
82 81
83 ngx_accept_disabled = NGX_ACCEPT_THRESHOLD 82 ngx_accept_disabled = NGX_ACCEPT_THRESHOLD
84 - ngx_cycle->free_connection_n; 83 - ngx_cycle->free_connection_n;
85 84
91 ngx_close_socket_n " failed"); 90 ngx_close_socket_n " failed");
92 } 91 }
93 92
94 return; 93 return;
95 } 94 }
96
97 rev = c->read;
98 wev = c->write;
99
100 ngx_memzero(c, sizeof(ngx_connection_t));
101
102 c->read = rev;
103 c->write = wev;
104 c->fd = s;
105 c->log = ev->log;
106 95
107 c->pool = ngx_create_pool(ls->pool_size, ev->log); 96 c->pool = ngx_create_pool(ls->pool_size, ev->log);
108 if (c->pool == NULL) { 97 if (c->pool == NULL) {
109 ngx_close_accepted_connection(c); 98 ngx_close_accepted_connection(c);
110 return; 99 return;
162 c->unexpected_eof = 1; 151 c->unexpected_eof = 1;
163 152
164 c->ctx = lc->ctx; 153 c->ctx = lc->ctx;
165 c->servers = lc->servers; 154 c->servers = lc->servers;
166 155
167 instance = rev->instance; 156 rev = c->read;
168 157 wev = c->write;
169 ngx_memzero(rev, sizeof(ngx_event_t)); 158
170 ngx_memzero(wev, sizeof(ngx_event_t));
171
172 rev->instance = !instance;
173 wev->instance = !instance;
174
175 rev->index = NGX_INVALID_INDEX;
176 wev->index = NGX_INVALID_INDEX;
177
178 rev->data = c;
179 wev->data = c;
180
181 wev->write = 1;
182 wev->ready = 1; 159 wev->ready = 1;
183 160
184 if (ngx_event_flags & (NGX_USE_AIO_EVENT|NGX_USE_RTSIG_EVENT)) { 161 if (ngx_event_flags & (NGX_USE_AIO_EVENT|NGX_USE_RTSIG_EVENT)) {
185 /* rtsig, aio, iocp */ 162 /* rtsig, aio, iocp */
186 rev->ready = 1; 163 rev->ready = 1;
195 172
196 rev->log = log; 173 rev->log = log;
197 wev->log = log; 174 wev->log = log;
198 175
199 /* 176 /*
200 * TODO: MT: - atomic increment (x86: lock xadd) 177 * TODO: MT: - ngx_atomic_fetch_add()
201 * or protection by critical section or light mutex 178 * or protection by critical section or light mutex
202 * 179 *
203 * TODO: MP: - allocated in a shared memory 180 * TODO: MP: - allocated in a shared memory
204 * - atomic increment (x86: lock xadd) 181 * - ngx_atomic_fetch_add()
205 * or protection by critical section or light mutex 182 * or protection by critical section or light mutex
206 */ 183 */
207 184
208 c->number = ngx_atomic_inc(ngx_connection_counter); 185 c->number = ngx_atomic_fetch_add(ngx_connection_counter, 1);
209 186
210 #if (NGX_STAT_STUB) 187 #if (NGX_STAT_STUB)
211 ngx_atomic_inc(ngx_stat_handled); 188 ngx_atomic_fetch_add(ngx_stat_handled, 1);
212 #endif 189 #endif
213 190
214 #if (NGX_THREADS) 191 #if (NGX_THREADS)
215 rev->lock = &c->lock; 192 rev->lock = &c->lock;
216 wev->lock = &c->lock; 193 wev->lock = &c->lock;
389 if (c->pool) { 366 if (c->pool) {
390 ngx_destroy_pool(c->pool); 367 ngx_destroy_pool(c->pool);
391 } 368 }
392 369
393 #if (NGX_STAT_STUB) 370 #if (NGX_STAT_STUB)
394 ngx_atomic_dec(ngx_stat_active); 371 ngx_atomic_fetch_add(ngx_stat_active, -1);
395 #endif 372 #endif
396 } 373 }
397 374
398 375
399 u_char * 376 u_char *