Mercurial > hg > nginx-quic
changeset 349:a958aa92f9a5
nginx-0.0.4-2004-06-09-20:36:55 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 09 Jun 2004 16:36:55 +0000 |
parents | 68ff8000a974 |
children | 7b96b7f8a6af |
files | src/core/nginx.h src/event/modules/ngx_rtsig_module.c |
diffstat | 2 files changed, 35 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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"
--- 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 */ } } } }