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

Reply via email to