From 3df1fbc6b9ed2cfcb272e2c5162e79c0ad0174d9 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 11 May 2026 09:32:41 +0200 Subject: [PATCH] BUG/MINOR: cfgparse-listen: do not emit extraneous line in rule order warnings Some functions such as tcp_parse_tcp_req() are able to emit their own warnings by relying on warnif_misplaced_*() which directly prints the warning. However when doing so they still increment the warning counter which makes cfg_parse_listen() try to emit it, except that what's in the variable is NULL, so we end up with: [WARNING] (260) : config : parsing [/etc/haproxy/haproxy.cfg:17] : (null) Let's just check the errmsg variable before printing the error. If it's NULL, it's because the message was already printed. This can be backported to all branches. --- src/cfgparse-listen.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cfgparse-listen.c b/src/cfgparse-listen.c index 2ef1a1081..38f2bc4d0 100644 --- a/src/cfgparse-listen.c +++ b/src/cfgparse-listen.c @@ -3262,12 +3262,14 @@ stats_error_parsing: /* prepare error message just in case */ rc = kwl->kw[index].parse(args, CFG_LISTEN, curproxy, curr_defproxy, file, linenum, &errmsg); if (rc < 0) { - ha_alert("parsing [%s:%d] : %s\n", file, linenum, errmsg); + if (errmsg) + ha_alert("parsing [%s:%d] : %s\n", file, linenum, errmsg); err_code |= ERR_ALERT | ERR_FATAL; goto out; } else if (rc > 0) { - ha_warning("parsing [%s:%d] : %s\n", file, linenum, errmsg); + if (errmsg) + ha_warning("parsing [%s:%d] : %s\n", file, linenum, errmsg); err_code |= ERR_WARN; goto out; } -- 2.47.3