From: Christopher Faulet Date: Tue, 29 Oct 2024 17:09:51 +0000 (+0100) Subject: BUG/MINOR: http-ana: Report internal error if an action yields on a final eval X-Git-Tag: v3.1-dev11~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=65ea29dcf85c6553e6dd0613a9c6c506fe22b9ac;p=thirdparty%2Fhaproxy.git BUG/MINOR: http-ana: Report internal error if an action yields on a final eval This was already performed for tcp actions at content level, but not for HTTP actions. It is always a bug, so it must be reported accordingly. This patch may be backported to all stable versions. --- diff --git a/src/http_ana.c b/src/http_ana.c index 3b1bdda403..af365ac229 100644 --- a/src/http_ana.c +++ b/src/http_ana.c @@ -2744,6 +2744,13 @@ static enum rule_result http_req_get_intercept_rule(struct proxy *px, struct lis goto end; case ACT_RET_YIELD: s->current_rule = rule; + if (act_opts & ACT_OPT_FINAL) { + send_log(s->be, LOG_WARNING, + "Internal error: action yields while it is no long allowed " + "for the http-request actions."); + rule_ret = HTTP_RULE_RES_ERROR; + goto end; + } rule_ret = HTTP_RULE_RES_YIELD; goto end; case ACT_RET_ERR: @@ -2909,6 +2916,13 @@ resume_execution: goto end; case ACT_RET_YIELD: s->current_rule = rule; + if (act_opts & ACT_OPT_FINAL) { + send_log(s->be, LOG_WARNING, + "Internal error: action yields while it is no long allowed " + "for the http-response/http-after-response actions."); + rule_ret = HTTP_RULE_RES_ERROR; + goto end; + } rule_ret = HTTP_RULE_RES_YIELD; goto end; case ACT_RET_ERR: