diff --git a/app/nginx-1.11.10/src/core/ngx_connection.c b/app/nginx-1.11.10/src/core/ngx_connection.c index 40391870..cdc2e18c 100644 --- a/app/nginx-1.11.10/src/core/ngx_connection.c +++ b/app/nginx-1.11.10/src/core/ngx_connection.c @@ -1043,15 +1043,6 @@ ngx_close_listening_sockets(ngx_cycle_t *cycle) ls = cycle->listening.elts; for (i = 0; i < cycle->listening.nelts; i++) { -#if (NGX_HAVE_FSTACK) - - // No need to deal with, just skip - if (fstack_territory(ls[i].sockaddr->sa_family, ls[i].type, 0)) { - continue; - } - -#endif //(NGX_HAVE_FSTACK) - c = ls[i].connection; if (c) { @@ -1079,11 +1070,22 @@ ngx_close_listening_sockets(ngx_cycle_t *cycle) ngx_log_debug2(NGX_LOG_DEBUG_CORE, cycle->log, 0, "close listening %V #%d ", &ls[i].addr_text, ls[i].fd); +#if (NGX_HAVE_FSTACK) + if(ls[i].fd != (ngx_socket_t) -1) { + if (ngx_close_socket(ls[i].fd) == -1) { + ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno, + ngx_close_socket_n " %V failed", &ls[i].addr_text); + } + } +#else + if (ngx_close_socket(ls[i].fd) == -1) { ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno, ngx_close_socket_n " %V failed", &ls[i].addr_text); } +#endif //(NGX_HAVE_FSTACK) + #if (NGX_HAVE_UNIX_DOMAIN) if (ls[i].sockaddr->sa_family == AF_UNIX diff --git a/app/nginx-1.11.10/src/event/modules/ngx_kqueue_module.c b/app/nginx-1.11.10/src/event/modules/ngx_kqueue_module.c index 12a7dc71..d6e9ab10 100644 --- a/app/nginx-1.11.10/src/event/modules/ngx_kqueue_module.c +++ b/app/nginx-1.11.10/src/event/modules/ngx_kqueue_module.c @@ -127,6 +127,12 @@ ngx_kqueue_init(ngx_cycle_t *cycle, ngx_msec_t timer) struct kevent kev; #endif +#if (NGX_HAVE_FSTACK) + if(ngx_process != NGX_PROCESS_WORKER) { + return NGX_OK; + } +#endif + kcf = ngx_event_get_conf(cycle->conf_ctx, ngx_kqueue_module); if (ngx_kqueue == -1) { diff --git a/app/nginx-1.11.10/src/event/ngx_event.c b/app/nginx-1.11.10/src/event/ngx_event.c index 01a2fe99..007192f8 100644 --- a/app/nginx-1.11.10/src/event/ngx_event.c +++ b/app/nginx-1.11.10/src/event/ngx_event.c @@ -250,19 +250,34 @@ ngx_process_events_and_timers(ngx_cycle_t *cycle) delta = ngx_current_msec; +#if (NGX_HAVE_FSTACK) + /* + * NGX_PROCESS_WORKERs run on both fstack and kernel, + * others ( e.g. cache manager/loader ) only run on kernel. + */ + if(ngx_process == NGX_PROCESS_WORKER) { + (void) ngx_process_events(cycle, timer, flags); + + /* + * handle message from kernel ( e.g. signals) + * in case of network inactivity + */ + if (ngx_current_msec - initial >= ngx_schedule_timeout) { + (void) ngx_ff_process_host_events(cycle, 0, flags); + + /* Update timer*/ + initial = ngx_current_msec; + } + } else { + (void) ngx_ff_process_host_events(cycle, timer, flags); + } + + delta = ngx_current_msec - delta; +#else (void) ngx_process_events(cycle, timer, flags); delta = ngx_current_msec - delta; -#if (NGX_HAVE_FSTACK) - /* handle message from kernel (PS: signals from master) in case of network inactivity */ - if (ngx_current_msec - initial >= ngx_schedule_timeout) { - (void) ngx_ff_process_host_events(cycle, 0, flags); - - /* Update timer*/ - initial = ngx_current_msec; - } -#else ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "timer delta: %M", delta); #endif