summaryrefslogtreecommitdiffhomepage
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/modules/ngx_kqueue_module.c14
-rw-r--r--src/event/modules/ngx_select_module.c7
-rw-r--r--src/event/ngx_event.c2
-rw-r--r--src/event/ngx_event.h17
-rw-r--r--src/event/ngx_event_close.c21
-rw-r--r--src/event/ngx_event_recv.c26
6 files changed, 54 insertions, 33 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index f7dee180e..1ea3d22c2 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -8,6 +8,7 @@
*/
#include <ngx_config.h>
+#include <ngx_core.h>
#include <ngx_types.h>
#include <ngx_log.h>
#include <ngx_connection.h>
@@ -19,7 +20,6 @@
#endif
static void ngx_add_timer_core(ngx_event_t *ev, u_int timer);
-static void ngx_inline ngx_del_timer(ngx_event_t *ev);
static int kq;
@@ -145,7 +145,7 @@ int ngx_kqueue_process_events(ngx_log_t *log)
}
ngx_log_debug(log, "ngx_kqueue_process_events: "
- "timer: %d, delta: %d" _ timer _ delta);
+ "timer: %d, delta: %d" _ timer _ delta);
if (timer) {
if (delta >= timer) {
@@ -158,7 +158,7 @@ int ngx_kqueue_process_events(ngx_log_t *log)
ngx_del_timer(ev);
#if 1
ev->timedout = 1;
- if (ev->event_handler(ev) == -1)
+ if (ev->event_handler(ev) == NGX_ERROR)
ev->close_handler(ev);
#else
if (ev->timer_handler(ev) == -1)
@@ -200,7 +200,7 @@ int ngx_kqueue_process_events(ngx_log_t *log)
ev->error = event_list[i].fflags;
}
- if (ev->event_handler(ev) == -1)
+ if (ev->event_handler(ev) == NGX_ERROR)
ev->close_handler(ev);
break;
@@ -233,6 +233,7 @@ static void ngx_add_timer_core(ngx_event_t *ev, u_int timer)
e->timer_prev = ev;
}
+#if 0
static void ngx_inline ngx_del_timer(ngx_event_t *ev)
{
if (ev->timer_prev)
@@ -240,9 +241,10 @@ static void ngx_inline ngx_del_timer(ngx_event_t *ev)
if (ev->timer_next) {
ev->timer_next->timer_prev = ev->timer_prev;
- ev->timer_prev = NULL;
+ ev->timer_next = NULL;
}
if (ev->timer_prev)
- ev->timer_next = NULL;
+ ev->timer_prev = NULL;
}
+#endif
diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c
index bde14a1e4..9639a1b43 100644
--- a/src/event/modules/ngx_select_module.c
+++ b/src/event/modules/ngx_select_module.c
@@ -24,7 +24,6 @@ static ngx_event_t timer_queue;
static void ngx_add_timer_core(ngx_event_t *ev, u_int timer);
-static void ngx_inline ngx_del_timer(ngx_event_t *ev);
static fd_set *ngx_select_get_fd_set(ngx_socket_t fd, int event,
ngx_log_t *log);
@@ -338,6 +337,7 @@ static void ngx_add_timer_core(ngx_event_t *ev, u_int timer)
e->timer_prev = ev;
}
+#if 0
static void ngx_inline ngx_del_timer(ngx_event_t *ev)
{
if (ev->timer_prev)
@@ -345,9 +345,10 @@ static void ngx_inline ngx_del_timer(ngx_event_t *ev)
if (ev->timer_next) {
ev->timer_next->timer_prev = ev->timer_prev;
- ev->timer_prev = NULL;
+ ev->timer_next = NULL;
}
if (ev->timer_prev)
- ev->timer_next = NULL;
+ ev->timer_prev = NULL;
}
+#endif
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index a5cdb1142..0d02dfea5 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -19,7 +19,7 @@ ngx_event_t *ngx_read_events, *ngx_write_events;
#if !(USE_KQUEUE)
-#if 1
+#if 0
ngx_event_type_e ngx_event_type = NGX_SELECT_EVENT;
#else
ngx_event_type_e ngx_event_type = NGX_KQUEUE_EVENT;
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index d2e6c1f67..9e4bc020a 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -133,6 +133,23 @@ NGX_AIO_EVENT overlapped, aio_read, aioread
#define ngx_add_timer(ev, time) ngx_add_event(ev, NGX_TIMER_EVENT, time)
+static void ngx_inline ngx_del_timer(ngx_event_t *ev)
+{
+ if (ev->timer_prev)
+ ev->timer_prev->timer_next = ev->timer_next;
+
+ if (ev->timer_next) {
+ ev->timer_next->timer_prev = ev->timer_prev;
+ ev->timer_next = NULL;
+ }
+
+ if (ev->timer_prev)
+ ev->timer_prev = NULL;
+}
+
+
+
+
extern ngx_event_t *ngx_read_events;
extern ngx_event_t *ngx_write_events;
extern ngx_connection_t *ngx_connections;
diff --git a/src/event/ngx_event_close.c b/src/event/ngx_event_close.c
index c95689182..0e3fe20c7 100644
--- a/src/event/ngx_event_close.c
+++ b/src/event/ngx_event_close.c
@@ -1,5 +1,6 @@
#include <ngx_config.h>
+#include <ngx_core.h>
#include <ngx_types.h>
#include <ngx_connection.h>
#include <ngx_event_close.h>
@@ -8,22 +9,24 @@
int ngx_event_close_connection(ngx_event_t *ev)
{
int rc;
- ngx_connection_t *cn = (ngx_connection_t *) ev->data;
+ ngx_connection_t *c = (ngx_connection_t *) ev->data;
- ngx_assert((cn->fd != -1), return -1, ev->log,
+ ngx_assert((c->fd != -1), return NGX_ERROR, c->log,
"ngx_event_close: already closed");
- if ((rc = ngx_close_socket(cn->fd)) == -1)
- ngx_log_error(NGX_LOG_ERR, ev->log, ngx_socket_errno,
+ ngx_destroy_pool(c->pool);
+
+ if ((rc = ngx_close_socket(c->fd)) == -1)
+ ngx_log_error(NGX_LOG_ERR, c->log, ngx_socket_errno,
"ngx_event_close: close failed");
- if (cn->read->next)
- ngx_del_event(cn->read, NGX_READ_EVENT);
+ if (c->read->next)
+ ngx_del_event(c->read, NGX_READ_EVENT);
- if (cn->write->next)
- ngx_del_event(cn->write, NGX_WRITE_EVENT);
+ if (c->write->next)
+ ngx_del_event(c->write, NGX_WRITE_EVENT);
- cn->fd = -1;
+ c->fd = -1;
return rc;
}
diff --git a/src/event/ngx_event_recv.c b/src/event/ngx_event_recv.c
index e286acaa9..4b01a4c68 100644
--- a/src/event/ngx_event_recv.c
+++ b/src/event/ngx_event_recv.c
@@ -6,29 +6,27 @@
#include <ngx_recv.h>
#include <ngx_connection.h>
-int ngx_event_recv_core(ngx_event_t *ev, char *buf, size_t size)
+int ngx_event_recv_core(ngx_connection_t *c, char *buf, size_t size)
{
int n;
ngx_err_t err;
- ngx_connection_t *c;
- c = (ngx_connection_t *) ev->data;
-
- if (ev->timedout) {
+ if (c->read->timedout) {
ngx_set_socket_errno(NGX_ETIMEDOUT);
- ngx_log_error(NGX_LOG_ERR, ev->log, NGX_ETIMEDOUT, "recv() failed");
+ ngx_log_error(NGX_LOG_ERR, c->log, NGX_ETIMEDOUT, "recv() failed");
return NGX_ERROR;
}
#if (HAVE_KQUEUE)
- ngx_log_debug(ev->log, "ngx_event_recv: eof:%d, avail:%d, err:%d" _
- ev->eof _ ev->available _ ev->error);
+ ngx_log_debug(c->log, "ngx_event_recv: eof:%d, avail:%d, err:%d" _
+ c->read->eof _ c->read->available _ c->read->error);
#if !(USE_KQUEUE)
if (ngx_event_type == NGX_KQUEUE_EVENT)
#endif
- if (ev->eof && ev->available == 0) {
- if (ev->error) {
- ngx_log_error(NGX_LOG_ERR, ev->log, ev->error, "recv() failed");
+ if (c->read->eof && c->read->available == 0) {
+ if (c->read->error) {
+ ngx_log_error(NGX_LOG_ERR, c->log, c->read->error,
+ "recv() failed");
return NGX_ERROR;
}
@@ -42,11 +40,11 @@ int ngx_event_recv_core(ngx_event_t *ev, char *buf, size_t size)
err = ngx_socket_errno;
if (err == NGX_EAGAIN) {
- ngx_log_error(NGX_LOG_INFO, ev->log, err, "recv() returns EAGAIN");
+ ngx_log_error(NGX_LOG_INFO, c->log, err, "recv() returns EAGAIN");
return NGX_AGAIN;
}
- ngx_log_error(NGX_LOG_ERR, ev->log, err, "recv() failed");
+ ngx_log_error(NGX_LOG_ERR, c->log, err, "recv() failed");
return NGX_ERROR;
}
@@ -54,7 +52,7 @@ int ngx_event_recv_core(ngx_event_t *ev, char *buf, size_t size)
#if !(USE_KQUEUE)
if (ngx_event_type == NGX_KQUEUE_EVENT)
#endif
- ev->available -= n;
+ c->read->available -= n;
#endif
return n;