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.
This commit is contained in:
Aurelien DARRAGON 2025-07-21 15:18:37 +02:00
parent f8e9545f70
commit 563b4fafc2

View File

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