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