aboutsummaryrefslogtreecommitdiff
path: root/src/core/ngx_connection.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/ngx_connection.c')
-rw-r--r--src/core/ngx_connection.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index af2f25cd8..e0a6ba23a 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -537,13 +537,21 @@ ngx_close_listening_sockets(ngx_cycle_t *cycle)
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 (c->read->active) {
+ } else if (ngx_event_flags & NGX_USE_EPOLL_EVENT) {
+
+ /*
+ * 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);
}
}