BUG/MEDIUM: mworker: stop proxies which have no listener in the master

The previous code was only stopping the listeners in the master, not the
entire proxy.

Since we now have a polling loop in the master, there might be some side
effects, indeed some things that are still initialized. For example the
checks were still running.
This commit is contained in:
William Lallemand 2018-12-03 20:34:44 +01:00 committed by Willy Tarreau
parent e064a80fa3
commit 2fd45fae46

View File

@ -623,6 +623,8 @@ static void mworker_cleanlisteners()
}
for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
int listen_in_master = 0;
list_for_each_entry_safe(l, l_next, &curproxy->conf.listeners, by_fe) {
/* remove the listener, but not those we need in the master... */
if (!(l->options & LI_O_MWORKER)) {
@ -634,8 +636,13 @@ static void mworker_cleanlisteners()
else
unbind_listener(l);
delete_listener(l);
} else {
listen_in_master = 1;
}
}
/* if the proxy shouldn't be in the master, we stop it */
if (!listen_in_master)
curproxy->state = PR_STSTOPPED;
}
}