From cf37e4cc1b8c63c437c6825d2e70588a6ccb8847 Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Wed, 28 Feb 2024 19:29:27 +0100 Subject: [PATCH] BUG/MINOR: cfgparse: report proper location for log-format-sd errors When a parsing error occurs inside a log-format-sd expression, we report the location of the log-format directive (which may not be set) instead of reporting the proper log-format-sd directive location where the parsing error occured. 1|listen test 2| log-format "%B" # no error 3| log-format-sd "%bad" # error | [ALERT] (322261) : config : Parsing [empty.conf:2]: failed to parse log-format-sd : no such format variable 'bad'. If you wanted to emit the '%' character verbatim, you need to use '%%'. The fix consists in using the config hints dedicated to log-format-sd directive instead of the log-format one. The bug was introduced in 8a4e4420 ("MEDIUM: log-format: Use standard HAProxy log system to report errors"). This should be backported to every stable versions. --- src/cfgparse.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cfgparse.c b/src/cfgparse.c index 4d4d12cd9..e9e4e8a7e 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -3435,12 +3435,12 @@ int check_config_validity() LOG_OPT_MANDATORY|LOG_OPT_MERGE_SPACES, SMP_VAL_FE_LOG_END, &err)) { ha_alert("Parsing [%s:%d]: failed to parse log-format-sd : %s.\n", - curproxy->conf.lfs_file, curproxy->conf.lfs_line, err); + curproxy->conf.lfsd_file, curproxy->conf.lfsd_line, err); free(err); cfgerr++; } else if (!add_to_logformat_list(NULL, NULL, LF_SEPARATOR, &curproxy->logformat_sd, &err)) { ha_alert("Parsing [%s:%d]: failed to parse log-format-sd : %s.\n", - curproxy->conf.lfs_file, curproxy->conf.lfs_line, err); + curproxy->conf.lfsd_file, curproxy->conf.lfsd_line, err); free(err); cfgerr++; }