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.
This commit is contained in:
Christopher Faulet 2020-02-28 09:47:07 +01:00
parent 2711e51016
commit 3e1f7f4a39
2 changed files with 2 additions and 3 deletions

View File

@ -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);

View File

@ -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;