From 563b4fafc26f20ff0e799811f7cea7dca01f2c9e 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. --- src/log.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/log.c b/src/log.c index 0227a2a8c..d481ce60b 100644 --- a/src/log.c +++ b/src/log.c @@ -6837,7 +6837,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, ","); @@ -6862,14 +6862,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)); -- 2.47.2