diff options
Diffstat (limited to '')
| -rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 4 | ||||
| -rw-r--r-- | src/event/modules/ngx_poll_module.c | 4 | ||||
| -rw-r--r-- | src/event/modules/ngx_select_module.c | 3 | ||||
| -rw-r--r-- | src/event/ngx_event.c | 1 | ||||
| -rw-r--r-- | src/event/ngx_event.h | 11 | ||||
| -rw-r--r-- | src/event/ngx_event_accept.c | 40 | ||||
| -rw-r--r-- | src/event/ngx_event_accept.h | 10 | ||||
| -rw-r--r-- | src/event/ngx_event_timer.c | 4 |
8 files changed, 34 insertions, 43 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index 0c2ce35bf..917fe2ccf 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -343,9 +343,7 @@ int ngx_kqueue_process_events(ngx_log_t *log) case EVFILT_AIO: ev->ready = 1; - if (ev->event_handler(ev) == NGX_ERROR) { - ev->close_handler(ev); - } + ev->event_handler(ev); break; diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c index 23bcc3f33..f0f39ddbc 100644 --- a/src/event/modules/ngx_poll_module.c +++ b/src/event/modules/ngx_poll_module.c @@ -251,9 +251,7 @@ int ngx_poll_process_events(ngx_log_t *log) } } - if (ev->event_handler(ev) == NGX_ERROR) { - ev->close_handler(ev); - } + ev->event_handler(ev); } if (ready != 0) { diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c index f325a6553..74c790e52 100644 --- a/src/event/modules/ngx_select_module.c +++ b/src/event/modules/ngx_select_module.c @@ -306,8 +306,7 @@ int ngx_select_process_events(ngx_log_t *log) ngx_select_del_event(ev, NGX_READ_EVENT, 0); } - if (ev->event_handler(ev) == NGX_ERROR) - ev->close_handler(ev); + ev->event_handler(ev); } if (ready != 0) { diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c index 2dabf6090..d3acb4fe2 100644 --- a/src/event/ngx_event.c +++ b/src/event/ngx_event.c @@ -9,7 +9,6 @@ #include <ngx_listen.h> #include <ngx_connection.h> #include <ngx_event.h> -#include <ngx_event_accept.h> #include <ngx_select_module.h> diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h index bc8cae52e..72f4ba985 100644 --- a/src/event/ngx_event.h +++ b/src/event/ngx_event.h @@ -28,9 +28,11 @@ typedef struct { struct ngx_event_s { void *data; + void (*event_handler)(ngx_event_t *ev); - int (*event_handler)(ngx_event_t *ev); +#if 0 int (*close_handler)(ngx_event_t *ev); +#endif void *context; char *action; @@ -39,7 +41,9 @@ struct ngx_event_s { ngx_event_t *prev; /* queue in mutex(), aio_read(), aio_write() */ ngx_event_t *next; /* */ +#if 0 int (*timer_handler)(ngx_event_t *ev); +#endif ngx_event_t *timer_prev; ngx_event_t *timer_next; @@ -165,7 +169,7 @@ typedef struct { #define NGX_HAVE_KQUEUE_EVENT 8 /* The event filter supports low water mark - kqueue's NOTE_LOWAT. - Early kqueue implementations have no NOTE_LOWAT so we need a separate flag */ + kqueue in FreeBSD 4.1-4.2 has no NOTE_LOWAT so we need a separate flag */ #define NGX_HAVE_LOWAT_EVENT 0x00000010 /* The event filter notifies only the changes (the edges) @@ -294,6 +298,9 @@ extern int ngx_event_flags; #endif +void ngx_event_accept(ngx_event_t *ev); + + ssize_t ngx_event_recv_core(ngx_connection_t *c, char *buf, size_t size); int ngx_event_close_connection(ngx_event_t *ev); diff --git a/src/event/ngx_event_accept.c b/src/event/ngx_event_accept.c index 411f2b1ad..26bc2e3cf 100644 --- a/src/event/ngx_event_accept.c +++ b/src/event/ngx_event_accept.c @@ -7,14 +7,9 @@ #include <ngx_log.h> #include <ngx_connection.h> #include <ngx_event.h> -#include <ngx_event_close.h> -#include <ngx_event_accept.h> -/* This function should always return NGX_OK even there are some failures - because if we return NGX_ERROR then listening socket would be closed */ - -int ngx_event_accept(ngx_event_t *ev) +void ngx_event_accept(ngx_event_t *ev) { int instance; socklen_t len; @@ -37,9 +32,16 @@ int ngx_event_accept(ngx_event_t *ev) #endif do { - ngx_test_null(pool, ngx_create_pool(ls->pool_size, ev->log), NGX_OK); + pool = ngx_create_pool(ls->pool_size, ev->log); + if (pool == NULL) { + return; + } + + sa = ngx_palloc(pool, ls->socklen); + if (sa == NULL) { + return; + } - ngx_test_null(sa, ngx_palloc(pool, ls->socklen), NGX_OK); len = ls->socklen; s = accept(ls->fd, sa, &len); @@ -50,12 +52,12 @@ int ngx_event_accept(ngx_event_t *ev) if (err == NGX_EAGAIN) { ngx_log_error(NGX_LOG_NOTICE, ev->log, err, "EAGAIN while accept %s", ls->addr_text.data); - return NGX_OK; + return; } ngx_log_error(NGX_LOG_ALERT, ev->log, err, "accept %s failed", ls->addr_text.data); - return NGX_OK; + return; } @@ -66,7 +68,7 @@ int ngx_event_accept(ngx_event_t *ev) if (ngx_blocking(s) == -1) { ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno, ngx_blocking_n " %s failed", ls->addr_text.data); - return NGX_OK; + return; } } #endif @@ -78,14 +80,14 @@ int ngx_event_accept(ngx_event_t *ev) if (ngx_nonblocking(s) == -1) { ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno, ngx_nonblocking_n " %s failed", ls->addr_text.data); - return NGX_OK; + return; } } #else if (ngx_nonblocking(s) == -1) { ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_socket_errno, ngx_nonblocking_n " %s failed", ls->addr_text.data); - return NGX_OK; + return; } #endif @@ -133,13 +135,13 @@ int ngx_event_accept(ngx_event_t *ev) /* STUB ? */ wev->timer = rev->timer = 10000; - wev->timer_handler = rev->timer_handler = ngx_event_close_connection; - wev->close_handler = rev->close_handler = ngx_event_close_connection; - c->ctx = ls->ctx; c->servers = ls->servers; - ngx_test_null(c->log, ngx_palloc(c->pool, sizeof(ngx_log_t)), NGX_OK); + c->log = ngx_palloc(c->pool, sizeof(ngx_log_t)); + if (c->log == NULL) { + return; + } ngx_memcpy(c->log, ev->log, sizeof(ngx_log_t)); rev->log = wev->log = c->log; @@ -159,7 +161,7 @@ int ngx_event_accept(ngx_event_t *ev) if (ngx_event_flags & NGX_HAVE_EDGE_EVENT) { if (ngx_edge_add_event(ev) == NGX_ERROR) { - return NGX_OK; + return; } } @@ -183,5 +185,5 @@ int ngx_event_accept(ngx_event_t *ev) #endif } while (ev->available); - return NGX_OK; + return; } diff --git a/src/event/ngx_event_accept.h b/src/event/ngx_event_accept.h deleted file mode 100644 index 7596c6e7f..000000000 --- a/src/event/ngx_event_accept.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef _NGX_EVENT_ACCEPT_H_INCLUDED_ -#define _NGX_EVENT_ACCEPT_H_INCLUDED_ - - -#include <ngx_event.h> - -int ngx_event_accept(ngx_event_t *ev); - - -#endif /* _NGX_EVENT_ACCEPT_H_INCLUDED_ */ diff --git a/src/event/ngx_event_timer.c b/src/event/ngx_event_timer.c index f32ce470c..b5dfdf9ef 100644 --- a/src/event/ngx_event_timer.c +++ b/src/event/ngx_event_timer.c @@ -136,9 +136,7 @@ void ngx_event_expire_timers(ngx_msec_t timer) ev->timedout = 1; } - if (ev->event_handler(ev) == NGX_ERROR) { - ev->close_handler(ev); - } + ev->event_handler(ev); } } } |
