diff --git a/src/event/modules/ngx_rtsig_module.c b/src/event/modules/ngx_rtsig_module.c
index 6e1ad14..c1428ee 100644
--- a/src/event/modules/ngx_rtsig_module.c
+++ b/src/event/modules/ngx_rtsig_module.c
@@ -136,6 +136,17 @@
     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 @@
     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_event_process_posted(cycle);
     }
 
-    return NGX_OK;
+    if (signo == -1) {
+        return NGX_AGAIN;
+    } else {
+        return NGX_OK;
+    }
 }
 
 
@@ -531,9 +556,8 @@
              * 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 */ }
             }
         }
     }
