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