From 2d36df275b1323cfae8105b5a39f6cfb96f50811 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 19 Feb 2021 11:41:01 +0100 Subject: [PATCH] BUG/MINOR: http-rules: Always replace the response status on a return action When a HTTP return action is triggered, HAProxy is responsible to return the response, based on the configured status code. On the request side, there is no problem because there is no server response to replace. But on the response side, we must take care to override the server response status code, if any, to be sure to use the rigth status code to get the http reply message. In short, we must always set the configured status code of the HTTP return action before returning the http reply to be sure to get the right reply, the one base on the http return action status code and not a reply based on the server response status code.. This patch should fix the issue #1139. It must be backported as far as 2.2. --- src/http_act.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/http_act.c b/src/http_act.c index 5a51ca431..73e43ff63 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -2026,6 +2026,7 @@ static enum act_return http_action_return(struct act_rule *rule, struct proxy *p { struct channel *req = &s->req; + s->txn->status = rule->arg.http_reply->status; if (http_reply_message(s, rule->arg.http_reply) == -1) return ACT_RET_ERR;