mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-18 09:24:31 +00:00
BUG/MEDIUM: listener: only enable a listening listener if needed
The test on listener->state == LI_LISTEN is not sufficient to decide if we need to enable a listener. Indeed, there is a very special case which is the inherited FD shared, which has to reflect the real socket state even after the previous test, and as such needs to remain in LI_LISTEN state. In this case we don't want a worker to start the master's listener nor conversely. Let's add a specific test for this.
This commit is contained in:
parent
dfe79251da
commit
38dba27d4d
@ -257,7 +257,8 @@ void enable_listener(struct listener *listener)
|
||||
if (listener->state == LI_LISTEN) {
|
||||
BUG_ON(listener->rx.fd == -1);
|
||||
if ((global.mode & (MODE_DAEMON | MODE_MWORKER)) &&
|
||||
!(proc_mask(listener->rx.settings->bind_proc) & pid_bit)) {
|
||||
(!!master != !!(listener->rx.flags & RX_F_MWORKER) ||
|
||||
!(proc_mask(listener->rx.settings->bind_proc) & pid_bit))) {
|
||||
/* we don't want to enable this listener and don't
|
||||
* want any fd event to reach it.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user