From cb161bfeb74f79981359f054f043903282cfe4a8 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Tue, 2 Jun 2026 13:38:14 +0200 Subject: [PATCH] BUG/MINOR: http-act: Properly handle final evaluation in pause action The ACT_OPT_FINAL flag was not properly handled in the pause action. When this flag is set, because of an abort or an unexpected error, an action must no longer yield. However, in the pause action, this flag was never tested. In case of client abort for instance, this could trigger an internal error instead of a client error. This patch should fix the issue #3403. It must be backported as far as 3.2. --- src/http_act.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/http_act.c b/src/http_act.c index 9b9b5207d..9f6b1871e 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -2082,6 +2082,9 @@ static enum act_return http_action_pause(struct act_rule *rule, struct proxy *px struct channel *chn = ((rule->from == ACT_F_HTTP_REQ) ? &s->req : &s->res); struct sample *key; + if (flags & ACT_OPT_FINAL) + goto end; + if (!tick_isset(chn->analyse_exp)) { int time; @@ -2099,6 +2102,7 @@ static enum act_return http_action_pause(struct act_rule *rule, struct proxy *px if (tick_isset(chn->analyse_exp) && !tick_is_expired(chn->analyse_exp, now_ms)) return ACT_RET_YIELD; + end: chn->analyse_exp = TICK_ETERNITY; return ACT_RET_CONT; }