From 3e1f7f4a39456051873aec75eb7d9e8f4ace6813 Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Fri, 28 Feb 2020 09:47:07 +0100 Subject: [PATCH] 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. --- src/http_act.c | 1 - src/http_htx.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/http_act.c b/src/http_act.c index c4a7ad4a7..9bfa7ebe4 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 d5239671b..35bb05625 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;