From 15eb3a9a08639a53e477dd4cc73f63f559fbafda Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Thu, 23 Nov 2017 22:23:08 +0100 Subject: [PATCH] BUG/MINOR: listener: Allow multiple "process" options on "bind" lines The documentation specifies that you can have several "process" options to define several ranges on "bind" lines (or "stats socket" lines). It is uncommon, but it should be possible. So the bind_proc bitmask in bind_conf structure must not be overwritten at each new "process" option parsed. This bug also exists in 1.7, 1.6 and 1.5. So it may be backported. But no one seems to have noticed it, so it was probably never hitted. --- src/listener.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/listener.c b/src/listener.c index 7cb4d6aa2..aede0d32d 100644 --- a/src/listener.c +++ b/src/listener.c @@ -944,7 +944,7 @@ static int bind_parse_process(char **args, int cur_arg, struct proxy *px, struct unsigned int low, high; if (strcmp(args[cur_arg + 1], "all") == 0) { - set = 0; + set |= ~0UL; } else if (strcmp(args[cur_arg + 1], "odd") == 0) { set |= ~0UL/3UL; /* 0x555....555 */ @@ -977,7 +977,7 @@ static int bind_parse_process(char **args, int cur_arg, struct proxy *px, struct return ERR_ALERT | ERR_FATAL; } - conf->bind_proc = set; + conf->bind_proc |= set; return 0; }