From d54c7b8618a906999639778269bcf6044fc9f8bd Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Fri, 7 Mar 2025 09:30:47 +0100 Subject: [PATCH] MINOR: cfgparse/peers: provide more info when ignoring invalid "peer" or "server" lines Invalid (incomplete) "server" or "peer" lines under peers section are now properly ignored. For completeness, in this patch we add some reports so that the user knows that incomplete lines were ignored. For an incomplete server line, since it is tolerated (see GH #565), we only emit a diag warning. For an incomplete peer line, we report a real warning, as it is not expected to have a peer line without an address:port specified. Also, 'newpeer == curpeers->local' check could be simplified since we already have the 'local_peer' variable which tells us that the parsed line refers to a local peer. (cherry picked from commit dbb25720dd7157e0f180d17486f10340f80a9fda) Signed-off-by: Willy Tarreau (cherry picked from commit 27a92cffb34d534c91e6b9deee886102f4b57b6c) Signed-off-by: Amaury Denoyelle --- src/cfgparse.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index 0d49bae..4356b98 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -893,12 +893,28 @@ int cfg_parse_peers(const char *file, int linenum, char **args, int kwm) */ struct peer *p; + /* while it is tolerated to have a "server" line without address, it isn't + * the case for a "peer" line + */ + if (peer) { + ha_warning("parsing [%s:%d] : '%s %s' : ignoring invalid peer definition (missing address:port)\n", + file, linenum, args[0], args[1]); + err_code |= ERR_WARN; + } + else { + ha_diag_warning("parsing [%s:%d] : '%s %s' : ignoring server (not a local peer, valid address:port is expected)\n", + file, linenum, args[0], args[1]); + } + p = curpeers->remote; curpeers->remote = curpeers->remote->next; free(p->id); free(p); - if (newpeer == curpeers->local) { - /* reset curpeers and curpeers fields + if (local_peer) { + /* we only get there with incomplete "peer" + * line for local peer (missing address): + * + * reset curpeers and curpeers fields * that are local peer related */ curpeers->local = NULL; -- 1.7.10.4