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.
This commit is contained in:
William Lallemand 2020-03-24 16:02:48 +01:00 committed by William Lallemand
parent 4fed93eb72
commit a2cfd7e356
1 changed files with 13 additions and 0 deletions

View File

@ -3907,6 +3907,19 @@ int check_config_validity()
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.