From b5910d497e51bac754b0a5bdbd58318b653e0859 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Thu, 30 Oct 2003 16:51:33 +0000 Subject: nginx-0.0.1-2003-10-30-19:51:33 import --- src/event/modules/ngx_devpoll_module.c | 2 +- src/event/ngx_event_connect.c | 24 ++++++++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) (limited to 'src/event') diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c index c21abde0d..d652ac297 100644 --- a/src/event/modules/ngx_devpoll_module.c +++ b/src/event/modules/ngx_devpoll_module.c @@ -41,7 +41,7 @@ static int ngx_devpoll_process_events(ngx_log_t *log); static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); -static int dp; +static int dp = -1; static struct pollfd *change_list, *event_list; static u_int nchanges, max_changes, nevents; diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c index c697c1be5..e42efb8cb 100644 --- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -203,16 +203,32 @@ ngx_log_debug(pc->log, "CONNECT: %s" _ peer->addr_port_text.data); } if (ngx_event_flags & NGX_USE_AIO_EVENT) { + /* aio, iocp */ - -#if 1 - /* TODO: NGX_EINPROGRESS */ + if (ngx_blocking(s) == -1) { + ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, + ngx_blocking_n " failed"); + + if (ngx_close_socket(s) == -1) { + ngx_log_error(NGX_LOG_ALERT, pc->log, ngx_socket_errno, + ngx_close_socket_n " failed"); + } + + return NGX_ERROR; + } + + /* + * aio allows to post operation on non-connected socket + * at least in FreeBSD + * + * TODO: check in Win32, etc. + */ + rev->ready = 1; wev->ready = 1; return NGX_OK; -#endif } /* TODO: epoll */ -- cgit