From: Frédéric Lécaille <flecai...@haproxy.com> Use ->local "peers" struct member to flag a "peers" section frontend has being initialized. This is to be able to initialize the frontend of "peers" sections on lines different from "peer" lines.
May be backported to 1.5 and newer. --- src/cfgparse.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index 04e36e8c..e3e96b51 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -648,9 +648,16 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm) /* We are done. */ goto out; + if (cfg_peers->local) { + ha_alert("parsing [%s:%d] : '%s %s' : local peer name already referenced at %s:%d.\n", + file, linenum, args[0], args[1], + curpeers->peers_fe->conf.file, curpeers->peers_fe->conf.line); + err_code |= ERR_FATAL; + goto out; + } + /* Current is local peer, it define a frontend */ newpeer->local = 1; - cfg_peers->local = newpeer; if (!curpeers->peers_fe) { if (init_peers_frontend(file, linenum, args[1], curpeers) != 0) { @@ -683,13 +690,7 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm) l->options |= LI_O_UNLIMITED; /* don't make the peers subject to global limits */ global.maxsock += l->maxconn; } - } - else { - ha_alert("parsing [%s:%d] : '%s %s' : local peer name already referenced at %s:%d.\n", - file, linenum, args[0], args[1], - curpeers->peers_fe->conf.file, curpeers->peers_fe->conf.line); - err_code |= ERR_FATAL; - goto out; + cfg_peers->local = newpeer; } } /* neither "peer" nor "peers" */ else if (!strcmp(args[0], "disabled")) { /* disables this peers section */ -- 2.11.0