From: William Lallemand Date: Tue, 24 Mar 2020 15:02:48 +0000 (+0100) Subject: BUG/MINOR: peers: init bind_proc to 1 if it wasn't initialized X-Git-Tag: v2.2-dev6~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a2cfd7e;p=thirdparty%2Fhaproxy.git BUG/MINOR: peers: init bind_proc to 1 if it wasn't initialized Tim reported that in master-worker mode, if a stick-table is declared but not used in the configuration, its associated peers listener won't bind. This problem is due the fact that the master-worker and the daemon mode, depend on the bind_proc field of the peers proxy to disable the listener. Unfortunately the bind_proc is left to 0 if no stick-table were used in the configuration, stopping the listener on all processes. This fixes sets the bind_proc to the first process if it wasn't initialized. Should fix bug #558. Should be backported as far as 1.8. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 5424574c92..85fc185fb6 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -3907,6 +3907,19 @@ out_uri_auth_compat: struct peers *curpeers = cfg_peers, **last; struct peer *p, *pb; + /* In the case the peers frontend was not initialized by a + stick-table used in the configuration, set its bind_proc + by default to the first process. */ + while (curpeers) { + if (!curpeers->peers_fe) + continue; + if (curpeers->peers_fe->bind_proc == 0) + curpeers->peers_fe->bind_proc = 1; + + curpeers = curpeers->next; + } + + curpeers = cfg_peers; /* Remove all peers sections which don't have a valid listener, * which are not used by any table, or which are bound to more * than one process.