BUG/MEDIUM: mworker: don't poll on LI_O_INHERITED listeners
The listeners with the LI_O_INHERITED flag were deleted but not unbound
which is a problem since we have a polling in the master.
This patch unbind every listeners which are not require for the master,
but does not close the FD of those that have a LI_O_INHERITED flag.
diff --git a/src/haproxy.c b/src/haproxy.c
index a7b07a2..82da862 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -615,13 +615,17 @@
for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
list_for_each_entry_safe(l, l_next, &curproxy->conf.listeners, by_fe) {
- /* does not close if the FD is inherited with fd@
- * from the parent process */
- if (!(l->options & (LI_O_INHERITED|LI_O_MWORKER)))
- unbind_listener(l);
/* remove the listener, but not those we need in the master... */
- if (!(l->options & LI_O_MWORKER))
+ if (!(l->options & LI_O_MWORKER)) {
+ /* unbind the listener but does not close if
+ the FD is inherited with fd@ from the parent
+ process */
+ if (l->options & LI_O_INHERITED)
+ unbind_listener_no_close(l);
+ else
+ unbind_listener(l);
delete_listener(l);
+ }
}
}
}