From: Christopher Faulet Date: Mon, 17 Feb 2025 15:37:47 +0000 (+0100) Subject: BUG/MINOR: fcgi: Don't set the status to 302 if it is already set X-Git-Tag: v3.2-dev6~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ca79ed5eefaa65fc82e1a8c1ec4308eaaadaebd1;p=thirdparty%2Fhaproxy.git BUG/MINOR: fcgi: Don't set the status to 302 if it is already set When a "Location" header was found in a FCGI response, the status code was forced to 302. But it should only be performed if no status code was set first. So now, we take care to not override an already defined status code when the "Location" header is found. This patch should fix the issue #2865. It must backported to all stable versions. --- diff --git a/src/h1_htx.c b/src/h1_htx.c index 611519c45..e731e8826 100644 --- a/src/h1_htx.c +++ b/src/h1_htx.c @@ -274,7 +274,7 @@ static int h1_postparse_res_hdrs(struct h1m *h1m, union h1_sl *h1sl, struct htx if (isteqi(hdrs[hdr].n, ist("status"))) { code = http_parse_status_val(hdrs[hdr].v, &status, &reason); } - else if (isteqi(hdrs[hdr].n, ist("location"))) { + else if (isteqi(hdrs[hdr].n, ist("location")) && !code) { code = 302; status = ist("302"); reason = ist("Found");