From: Aurelien DARRAGON Date: Fri, 7 Mar 2025 08:30:47 +0000 (+0100) Subject: MINOR: cfgparse/peers: provide more info when ignoring invalid "peer" or "server... X-Git-Tag: v3.2-dev7~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbb25720dd7157e0f180d17486f10340f80a9fda;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index ab49a73b3..a498f69cd 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -895,12 +895,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;