# HG changeset patch # User Igor Sysoev # Date 1086799015 0 # Node ID a958aa92f9a57e573f00b13efca8335dadd7dbb4 # Parent 68ff8000a974c9bffdb9be75b01cb5550e73c8f1 nginx-0.0.4-2004-06-09-20:36:55 import diff --git a/src/core/nginx.h b/src/core/nginx.h --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -2,7 +2,7 @@ #define _NGINX_H_INCLUDED_ -#define NGINX_VER "nginx/0.0.3" +#define NGINX_VER "nginx/0.0.4" #define NGINX_VAR "NGINX" #define NGX_NEWPID_EXT ".newbin" diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c --- a/src/event/modules/ngx_rtsig_module.c +++ b/src/event/modules/ngx_rtsig_module.c @@ -136,6 +136,17 @@ static ngx_int_t ngx_rtsig_add_connectio int signo; ngx_rtsig_conf_t *rtscf; + if (c->read->accept && c->read->disabled) { + if (fcntl(c->fd, F_SETOWN, ngx_pid) == -1) { + ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, + "fcntl(F_SETOWN) failed"); + return NGX_ERROR; + } + + c->read->active = 1; + c->read->disabled = 0; + } + rtscf = ngx_event_get_conf(ngx_cycle->conf_ctx, ngx_rtsig_module); signo = rtscf->signo + c->read->instance; @@ -181,12 +192,22 @@ static ngx_int_t ngx_rtsig_del_connectio ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "rtsig del connection: fd:%d", c->fd); - if (!(flags & NGX_CLOSE_EVENT)) { - if (fcntl(c->fd, F_SETFL, O_RDWR|O_NONBLOCK) == -1) { - ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, - "fcntl(O_RDWR|O_NONBLOCK) failed"); - return NGX_ERROR; - } + if ((flags & NGX_DISABLE_EVENT) && c->read->accept) { + c->read->active = 0; + c->read->disabled = 0; + return NGX_OK; + } + + if (flags & NGX_CLOSE_EVENT) { + c->read->active = 0; + c->write->active = 0; + return NGX_OK; + } + + if (fcntl(c->fd, F_SETFL, O_RDWR|O_NONBLOCK) == -1) { + ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno, + "fcntl(O_RDWR|O_NONBLOCK) failed"); + return NGX_ERROR; } c->read->active = 0; @@ -444,7 +465,11 @@ ngx_int_t ngx_rtsig_process_events(ngx_c ngx_event_process_posted(cycle); } - return NGX_OK; + if (signo == -1) { + return NGX_AGAIN; + } else { + return NGX_OK; + } } @@ -531,9 +556,8 @@ static ngx_int_t ngx_rtsig_process_overf * is bigger then "/proc/sys/kernel/rtsig-max / 4" */ - while (rtsig_max / 4 < rtsig_nr) { - ngx_rtsig_process_events(cycle); - rtsig_nr--; + if (rtsig_max / 4 < rtsig_nr) { + while (ngx_rtsig_process_events(cycle) == NGX_OK) { /* void */ } } } }