summaryrefslogtreecommitdiffhomepage
path: root/src/event
diff options
context:
space:
mode:
Diffstat (limited to 'src/event')
-rw-r--r--src/event/modules/ngx_aio_module.c69
-rw-r--r--src/event/modules/ngx_kqueue_module.c2
2 files changed, 30 insertions, 41 deletions
diff --git a/src/event/modules/ngx_aio_module.c b/src/event/modules/ngx_aio_module.c
index a5375e917..afb343ef2 100644
--- a/src/event/modules/ngx_aio_module.c
+++ b/src/event/modules/ngx_aio_module.c
@@ -81,7 +81,7 @@ static void ngx_aio_done(ngx_log_t *log)
}
-/* The event adding and deleteing are needed for the listening sockets */
+/* The event adding and deleting are needed for the listening sockets */
static int ngx_aio_add_event(ngx_event_t *ev, int event, u_int flags)
{
@@ -99,49 +99,38 @@ static int ngx_aio_del_connection(ngx_connection_t *c)
{
int rc;
- if (c->read->active || c->write->active) {
- rc = aio_cancel(c->fd, NULL);
- if (rc == -1) {
- ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno,
- "aio_cancel() failed");
- return NGX_ERROR;
- }
+ if (c->read->active == 0 && c->write->active == 0) {
+ return NGX_OK;
+ }
- ngx_log_debug(c->log, "aio_cancel: %d" _ rc);
+ rc = aio_cancel(c->fd, NULL);
-#if 0
- rc = aio_error(&c->read->aiocb);
- if (rc == -1) {
- ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno,
- "aio_error() failed");
- return NGX_ERROR;
- }
-
- ngx_log_debug(c->log, "aio_error: %d" _ rc);
-#endif
+ ngx_log_debug(c->log, "aio_cancel: %d" _ rc);
+
+ if (rc == AIO_CANCELED) {
+ c->read->active = c->write->active = 0;
+ return NGX_OK;
}
-#if 0
- if (c->write->active) {
- rc = aio_cancel(c->fd, &c->write->aiocb);
- if (rc == -1) {
- ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno,
- "aio_cancel() failed");
- return NGX_ERROR;
- }
-
- ngx_log_debug(c->log, "aio_cancel: %d" _ rc);
-
- rc = aio_error(&c->read->aiocb);
- if (rc == -1) {
- ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno,
- "aio_error() failed");
- return NGX_ERROR;
- }
-
- ngx_log_debug(c->log, "aio_error: %d" _ rc);
+ if (rc == AIO_ALLDONE) {
+ c->read->active = c->write->active = 0;
+ ngx_log_error(NGX_LOG_ALERT, c->log, 0,
+ "aio_cancel() returned AIO_ALLDONE");
+ return NGX_OK;
+ }
+
+ if (rc == -1) {
+ ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
+ "aio_cancel() failed");
+ return NGX_ERROR;
+ }
+
+ if (rc == AIO_NOTCANCELED) {
+ ngx_log_error(NGX_LOG_ALERT, c->log, 0,
+ "aio_cancel() returned AIO_NOTCANCELED");
+
+ return NGX_ERROR;
}
-#endif
return NGX_OK;
}
@@ -152,7 +141,7 @@ static int ngx_aio_process_events(ngx_log_t *log)
return ngx_kqueue_module_ctx.actions.process(log);
}
-#endif
+#endif /* HAVE_KQUEUE */
#if 0
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c
index b8398b5f1..7a38d0a5e 100644
--- a/src/event/modules/ngx_kqueue_module.c
+++ b/src/event/modules/ngx_kqueue_module.c
@@ -57,7 +57,7 @@ ngx_event_module_t ngx_kqueue_module_ctx = {
ngx_kqueue_create_conf, /* create configuration */
ngx_kqueue_init_conf, /* init configuration */
- {
+ {
ngx_kqueue_add_event, /* add an event */
ngx_kqueue_del_event, /* delete an event */
ngx_kqueue_add_event, /* enable an event */