nginx-0.0.7-2004-06-15-11:55:11 import
diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 4ab2388..feaf271 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -177,6 +177,10 @@
ngx_rtsig_conf_t *rtscf;
if (c->read->accept && c->read->disabled) {
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
+ "rtsig enable connection: fd:%d", c->fd);
+
if (fcntl(c->fd, F_SETOWN, ngx_pid) == -1) {
ngx_log_error(NGX_LOG_ALERT, c->log, ngx_errno,
"fcntl(F_SETOWN) failed");
@@ -233,14 +237,20 @@
"rtsig del connection: fd:%d", c->fd);
if ((flags & NGX_DISABLE_EVENT) && c->read->accept) {
+
+ ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
+ "rtsig disable connection: fd:%d", c->fd);
+
c->read->active = 0;
- c->read->disabled = 0;
+ c->read->disabled = 1;
return NGX_OK;
}
if (flags & NGX_CLOSE_EVENT) {
c->read->active = 0;
c->write->active = 0;
+ c->read->posted = 0;
+ c->write->posted = 0;
return NGX_OK;
}
@@ -252,6 +262,8 @@
c->read->active = 0;
c->write->active = 0;
+ c->read->posted = 0;
+ c->write->posted = 0;
return NGX_OK;
}
@@ -299,6 +311,8 @@
ngx_accept_disabled--;
} else {
+ ngx_accept_mutex_held = 0;
+
if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) {
return NGX_ERROR;
}
@@ -517,7 +531,8 @@
static ngx_int_t ngx_rtsig_process_overflow(ngx_cycle_t *cycle)
{
- int name[2], len, rtsig_max, rtsig_nr, events, ready;
+ int name[2], rtsig_max, rtsig_nr, events, ready;
+ size_t len;
ngx_int_t tested, n, i;
ngx_err_t err;
ngx_connection_t *c;
@@ -709,8 +724,8 @@
ngx_conf_init_value(rtscf->signo, SIGRTMIN + 10);
ngx_conf_init_value(rtscf->overflow_events, 16);
- ngx_conf_init_value(rtscf->overflow_test, 100);
- ngx_conf_init_value(rtscf->overflow_threshold, 4);
+ ngx_conf_init_value(rtscf->overflow_test, 32);
+ ngx_conf_init_value(rtscf->overflow_threshold, 10);
return NGX_CONF_OK;
}
diff --git a/src/event/ngx_event.c b/src/event/ngx_event.c
index 208d171..a1153a6 100644
--- a/src/event/ngx_event.c
+++ b/src/event/ngx_event.c
@@ -628,7 +628,7 @@
static char *ngx_event_init_conf(ngx_cycle_t *cycle, void *conf)
{
- ngx_event_conf_t *ecf = conf;
+ ngx_event_conf_t *ecf = conf;
#if (HAVE_KQUEUE)
@@ -650,6 +650,8 @@
#elif (HAVE_RTSIG)
+ ngx_core_conf_t *ccf;
+
ngx_conf_init_unsigned_value(ecf->connections, DEFAULT_CONNECTIONS);
ngx_conf_init_value(ecf->use, ngx_rtsig_module.ctx_index);
ngx_conf_init_ptr_value(ecf->name, ngx_rtsig_module_ctx.name->data);
@@ -701,5 +703,18 @@
ngx_conf_init_value(ecf->accept_mutex, 1);
ngx_conf_init_msec_value(ecf->accept_mutex_delay, 500);
+#if (HAVE_RTSIG)
+ if (ecf->use == ngx_rtsig_module.ctx_index && ecf->accept_mutex == 0) {
+ ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx,
+ ngx_core_module);
+ if (ccf->worker_processes) {
+ ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
+ "the \"rtsig\" method requires "
+ "\"accept_mutex\" to be on");
+ return NGX_CONF_ERROR;
+ }
+ }
+#endif
+
return NGX_CONF_OK;
}
diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h
index 1b9dfb2..986ae0e 100644
--- a/src/event/ngx_event.h
+++ b/src/event/ngx_event.h
@@ -277,11 +277,11 @@
*/
#define NGX_CLOSE_EVENT 1
+#define NGX_DISABLE_EVENT 2
/* these flags have a meaning only for kqueue */
#define NGX_LOWAT_EVENT 0
-#define NGX_DISABLE_EVENT 0
#define NGX_VNODE_EVENT 0