Mercurial > hg > nginx
comparison src/event/ngx_event_accept.c @ 6:669801705ab1
nginx-0.0.1-2002-08-26-19:18:19 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 26 Aug 2002 15:18:19 +0000 |
parents | 34a521b1a148 |
children | 708f8bb772ec |
comparison
equal
deleted
inserted
replaced
5:62b1a364857c | 6:669801705ab1 |
---|---|
1 | 1 |
2 #include <ngx_config.h> | 2 #include <ngx_config.h> |
3 #include <ngx_core.h> | |
3 #include <ngx_types.h> | 4 #include <ngx_types.h> |
4 #include <ngx_log.h> | 5 #include <ngx_log.h> |
5 #include <ngx_connection.h> | 6 #include <ngx_connection.h> |
6 #include <ngx_event.h> | 7 #include <ngx_event.h> |
7 #include <ngx_event_close.h> | 8 #include <ngx_event_close.h> |
20 ev->available); | 21 ev->available); |
21 | 22 |
22 ev->ready = 0; | 23 ev->ready = 0; |
23 | 24 |
24 do { | 25 do { |
25 if ((s = accept(cn->fd, (struct sockaddr *) &addr, &addrlen)) == -1) { | 26 if ((s = accept(cn->fd, cn->sockaddr, &cn->socklen)) == -1) { |
26 err = ngx_socket_errno; | 27 err = ngx_socket_errno; |
27 if (err == NGX_EAGAIN) { | 28 if (err == NGX_EAGAIN) { |
28 ngx_log_error(NGX_LOG_INFO, ev->log, err, | 29 ngx_log_error(NGX_LOG_INFO, ev->log, err, |
29 "ngx_event_accept: EAGAIN while accept"); | 30 "ngx_event_accept: EAGAIN while accept %s", |
30 return 0; | 31 cn->addr_text); |
32 return NGX_OK; | |
31 } | 33 } |
32 | 34 |
33 ngx_log_error(NGX_LOG_ERR, ev->log, err, | 35 ngx_log_error(NGX_LOG_ERR, ev->log, err, |
34 "ngx_event_accept: accept failed"); | 36 "ngx_event_accept: accept %s failed", cn->addr_text); |
35 /* if we return -1 listen socket would be closed */ | 37 /* if we return NGX_ERROR listen socket would be closed */ |
36 return 0; | 38 return NGX_OK; |
37 } | 39 } |
38 | 40 |
39 ngx_log_debug(ev->log, "ngx_event_accept: accepted socket: %d" _ s); | 41 ngx_log_debug(ev->log, "ngx_event_accept: accept: %d" _ s); |
40 | 42 |
41 #if !(HAVE_INHERITED_NONBLOCK) | 43 #if !(HAVE_INHERITED_NONBLOCK) |
42 if (ngx_nonblocking(s) == -1) | 44 if (ngx_nonblocking(s) == -1) |
43 ngx_log_error(NGX_LOG_ERR, log, ngx_socket_errno, | 45 ngx_log_error(NGX_LOG_ERR, log, ngx_socket_errno, |
44 ngx_nonblocking_n "failed"); | 46 ngx_nonblocking_n "failed"); |
45 #endif | 47 #endif |
46 | 48 |
47 ngx_memzero(&ngx_read_events[s], sizeof(ngx_event_t)); | 49 ngx_memzero(&ngx_read_events[s], sizeof(ngx_event_t)); |
48 ngx_memzero(&ngx_write_events[s], sizeof(ngx_event_t)); | 50 ngx_memzero(&ngx_write_events[s], sizeof(ngx_event_t)); |
49 ngx_memzero(&ngx_connections[s], sizeof(ngx_connection_t)); | 51 ngx_memzero(&ngx_connections[s], sizeof(ngx_connection_t)); |
52 | |
53 ngx_connections[s].sockaddr = cn->sockaddr; | |
54 ngx_connections[s].family = cn->family; | |
55 ngx_connections[s].socklen = cn->socklen; | |
56 ngx_connections[s].addr = cn->addr; | |
57 ngx_connections[s].addr_textlen = cn->addr_textlen; | |
58 ngx_connections[s].post_accept_timeout = cn->post_accept_timeout; | |
50 | 59 |
51 ngx_read_events[s].data = ngx_write_events[s].data | 60 ngx_read_events[s].data = ngx_write_events[s].data |
52 = &ngx_connections[s]; | 61 = &ngx_connections[s]; |
53 ngx_connections[s].read = &ngx_read_events[s]; | 62 ngx_connections[s].read = &ngx_read_events[s]; |
54 ngx_connections[s].write = &ngx_write_events[s]; | 63 ngx_connections[s].write = &ngx_write_events[s]; |
58 ngx_write_events[s].ready = 1; | 67 ngx_write_events[s].ready = 1; |
59 | 68 |
60 ngx_write_events[s].timer = ngx_read_events[s].timer = 10000; | 69 ngx_write_events[s].timer = ngx_read_events[s].timer = 10000; |
61 | 70 |
62 ngx_write_events[s].timer_handler = | 71 ngx_write_events[s].timer_handler = |
63 ngx_read_events[s].timer_handler = ngx_event_close; | 72 ngx_read_events[s].timer_handler = ngx_event_close_connection; |
64 | 73 |
65 ngx_write_events[s].close_handler = | 74 ngx_write_events[s].close_handler = |
66 ngx_read_events[s].close_handler = ngx_event_close; | 75 ngx_read_events[s].close_handler = ngx_event_close_connection; |
67 | 76 |
68 ngx_connections[s].server = cn->server; | 77 ngx_connections[s].server = cn->server; |
69 ngx_connections[s].servers = cn->servers; | 78 ngx_connections[s].servers = cn->servers; |
70 ngx_connections[s].log = | 79 ngx_connections[s].log = |
71 ngx_read_events[s].log = ngx_write_events[s].log = ev->log; | 80 ngx_read_events[s].log = ngx_write_events[s].log = ev->log; |
72 | 81 |
73 #if (HAVE_DEFERRED_ACCEPT) | 82 #if (HAVE_DEFERRED_ACCEPT) |
74 if (ev->accept_filter) | 83 if (ev->accept_filter) |
75 ngx_read_events[s].ready = 1; | 84 ngx_read_events[s].ready = 1; |
76 #endif | 85 #endif |
77 | 86 |