Mercurial > hg > nginx
diff 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 |
line wrap: on
line diff
--- a/src/event/ngx_event_accept.c Fri Aug 23 16:14:30 2002 +0000 +++ b/src/event/ngx_event_accept.c Mon Aug 26 15:18:19 2002 +0000 @@ -1,5 +1,6 @@ #include <ngx_config.h> +#include <ngx_core.h> #include <ngx_types.h> #include <ngx_log.h> #include <ngx_connection.h> @@ -22,21 +23,22 @@ ev->ready = 0; do { - if ((s = accept(cn->fd, (struct sockaddr *) &addr, &addrlen)) == -1) { + if ((s = accept(cn->fd, cn->sockaddr, &cn->socklen)) == -1) { err = ngx_socket_errno; if (err == NGX_EAGAIN) { ngx_log_error(NGX_LOG_INFO, ev->log, err, - "ngx_event_accept: EAGAIN while accept"); - return 0; + "ngx_event_accept: EAGAIN while accept %s", + cn->addr_text); + return NGX_OK; } - + ngx_log_error(NGX_LOG_ERR, ev->log, err, - "ngx_event_accept: accept failed"); - /* if we return -1 listen socket would be closed */ - return 0; + "ngx_event_accept: accept %s failed", cn->addr_text); + /* if we return NGX_ERROR listen socket would be closed */ + return NGX_OK; } - - ngx_log_debug(ev->log, "ngx_event_accept: accepted socket: %d" _ s); + + ngx_log_debug(ev->log, "ngx_event_accept: accept: %d" _ s); #if !(HAVE_INHERITED_NONBLOCK) if (ngx_nonblocking(s) == -1) @@ -48,6 +50,13 @@ ngx_memzero(&ngx_write_events[s], sizeof(ngx_event_t)); ngx_memzero(&ngx_connections[s], sizeof(ngx_connection_t)); + ngx_connections[s].sockaddr = cn->sockaddr; + ngx_connections[s].family = cn->family; + ngx_connections[s].socklen = cn->socklen; + ngx_connections[s].addr = cn->addr; + ngx_connections[s].addr_textlen = cn->addr_textlen; + ngx_connections[s].post_accept_timeout = cn->post_accept_timeout; + ngx_read_events[s].data = ngx_write_events[s].data = &ngx_connections[s]; ngx_connections[s].read = &ngx_read_events[s]; @@ -60,16 +69,16 @@ ngx_write_events[s].timer = ngx_read_events[s].timer = 10000; ngx_write_events[s].timer_handler = - ngx_read_events[s].timer_handler = ngx_event_close; + ngx_read_events[s].timer_handler = ngx_event_close_connection; ngx_write_events[s].close_handler = - ngx_read_events[s].close_handler = ngx_event_close; + ngx_read_events[s].close_handler = ngx_event_close_connection; ngx_connections[s].server = cn->server; ngx_connections[s].servers = cn->servers; ngx_connections[s].log = ngx_read_events[s].log = ngx_write_events[s].log = ev->log; - + #if (HAVE_DEFERRED_ACCEPT) if (ev->accept_filter) ngx_read_events[s].ready = 1;