From: Christopher Faulet Date: Fri, 28 Feb 2020 08:47:07 +0000 (+0100) Subject: BUG/MINOR: http-htx: Do case-insensive comparisons on Host header name X-Git-Tag: v2.2-dev4~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e1f7f4a39456051873aec75eb7d9e8f4ace6813;p=thirdparty%2Fhaproxy.git BUG/MINOR: http-htx: Do case-insensive comparisons on Host header name When a header is added or modified, in http_add_header() or http_replace_header(), a comparison is performed on its name to know if it is the Host header and if the authority part of the uri must be updated or not. This comparision must be case-insensive. This patch should fix the issue #522. It must be backported to 2.1. --- diff --git a/src/http_act.c b/src/http_act.c index c4a7ad4a7b..9bfa7ebe44 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -1398,7 +1398,6 @@ static enum act_parse_ret parse_http_del_header(const char **args, int *orig_arg rule->arg.http.str.ptr = strdup(args[cur_arg]); rule->arg.http.str.len = strlen(rule->arg.http.str.ptr); - px->conf.args.ctx = (rule->from == ACT_F_HTTP_REQ ? ARGC_HRQ : ARGC_HRS); LIST_INIT(&rule->arg.http.fmt); diff --git a/src/http_htx.c b/src/http_htx.c index d5239671b0..35bb056252 100644 --- a/src/http_htx.c +++ b/src/http_htx.c @@ -215,7 +215,7 @@ int http_add_header(struct htx *htx, const struct ist n, const struct ist v) end: sl = http_get_stline(htx); - if (sl && (sl->flags & HTX_SL_F_HAS_AUTHORITY) && isteq(n, ist("host"))) { + if (sl && (sl->flags & HTX_SL_F_HAS_AUTHORITY) && isteqi(n, ist("host"))) { if (!http_update_authority(htx, sl, v)) goto fail; } @@ -491,7 +491,7 @@ int http_replace_header(struct htx *htx, struct http_hdr_ctx *ctx, goto fail; sl = http_get_stline(htx); - if (sl && (sl->flags & HTX_SL_F_HAS_AUTHORITY) && isteq(name, ist("host"))) { + if (sl && (sl->flags & HTX_SL_F_HAS_AUTHORITY) && isteqi(name, ist("host"))) { if (!http_update_authority(htx, sl, value)) goto fail; ctx->blk = NULL;