]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MINOR: listener: Allow multiple "process" options on "bind" lines
authorChristopher Faulet <cfaulet@haproxy.com>
Thu, 23 Nov 2017 21:23:08 +0000 (22:23 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 24 Nov 2017 14:38:49 +0000 (15:38 +0100)
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

index 7cb4d6aa25c8dc74619a2b8e940a118f80cd6587..aede0d32dfbf298a5dbc14659413fa0be811142a 100644 (file)
@@ -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;
 }