From: William Lallemand Date: Fri, 12 Oct 2018 08:39:54 +0000 (+0200) Subject: BUG/MEDIUM: mworker: don't poll on LI_O_INHERITED listeners X-Git-Tag: v1.9-dev4~48 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=dd319a5b1df73ab9a1443a27d1cafab0f8de86d6;p=thirdparty%2Fhaproxy.git 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 a7b07a2675..82da86222c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -615,13 +615,17 @@ static void mworker_cleanlisteners() 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); + } } } }