changeset 1833:86464f8eddd6

workaround for Linux 2.6 OpenVZ
author Igor Sysoev <igor@sysoev.ru>
date Tue, 08 Jan 2008 11:31:50 +0000
parents 2547ef00c722
children aa343f669f11
files src/core/ngx_connection.c
diffstat 1 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -537,13 +537,21 @@ ngx_close_listening_sockets(ngx_cycle_t 
 
         c = ls[i].connection;
 
-        if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
-            if (c->read->active) {
+        if (c->read->active) {
+            if (ngx_event_flags & NGX_USE_RTSIG_EVENT) {
                 ngx_del_conn(c, NGX_CLOSE_EVENT);
-            }
+
+            } else if (ngx_event_flags & NGX_USE_EPOLL_EVENT) {
 
-        } else {
-            if (c->read->active) {
+                /*
+                 * it seems that Linux-2.6.x OpenVZ sends events
+                 * for closed shared listening sockets unless
+                 * the events was explicity deleted
+                 */
+
+                ngx_del_event(c->read, NGX_READ_EVENT, 0);
+
+            } else {
                 ngx_del_event(c->read, NGX_READ_EVENT, NGX_CLOSE_EVENT);
             }
         }