From 1e7317eaae68f7a34f7cecebfc02594feebf72f3 Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Mon, 21 Jul 2025 15:18:37 +0200 Subject: [PATCH] BUG/MINOR: logs: fix log-steps extra log origins selection Willy noticed that it was not possible to select extra log origins using log-steps directive. Extra origins are the one registered using log_orig_register() such as http-req. Reason was the error path was always executed during extra log origin matching for log-steps parser, while it should only be executed if no match was found. It should be backported to 3.1. (cherry picked from commit 563b4fafc26f20ff0e799811f7cea7dca01f2c9e) Signed-off-by: Amaury Denoyelle (cherry picked from commit 54dee5bb5da5e23496dbd5ae86807a31a07bd7a6) Signed-off-by: Christopher Faulet --- src/log.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/log.c b/src/log.c index c2c605c..b78e5c3 100644 --- a/src/log.c +++ b/src/log.c @@ -6721,7 +6721,7 @@ static int px_parse_log_steps(char **args, int section_type, struct proxy *curpx while (str[0]) { struct eb32_node *cur_step; - enum log_orig_id cur_id; + enum log_orig_id cur_id = LOG_ORIG_UNSPEC; cur_sep = strcspn(str, ","); @@ -6746,14 +6746,16 @@ static int px_parse_log_steps(char **args, int section_type, struct proxy *curpx } } - memprintf(err, - "invalid log step name (%.*s). Expected values are: " - "accept, request, connect, response, close", - (int)cur_sep, str); - list_for_each_entry(cur, &log_origins, list) - memprintf(err, "%s, %s", *err, cur->name); + if (cur_id == LOG_ORIG_UNSPEC) { + memprintf(err, + "invalid log step name (%.*s). Expected values are: " + "accept, request, connect, response, close", + (int)cur_sep, str); + list_for_each_entry(cur, &log_origins, list) + memprintf(err, "%s, %s", *err, cur->name); - goto end; + goto end; + } } cur_step = malloc(sizeof(*cur_step)); -- 1.7.10.4