Mercurial > hg > nginx-quic
comparison src/event/ngx_event_accept.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 | 511a89da35ad |
children | 58475592100c |
comparison
equal
deleted
inserted
replaced
560:8886091eddd2 | 561:e48ebafc6939 |
---|---|
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 * |