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.
This commit is contained in:
Aurelien DARRAGON 2025-03-07 09:30:47 +01:00
parent a76b5358f0
commit dbb25720dd

View File

@ -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;