From: Christopher Faulet Date: Wed, 29 Apr 2020 09:45:44 +0000 (+0200) Subject: MINOR: checks: Don't support multiple host header for http-check send rule X-Git-Tag: v2.2-dev7~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13ec87b4c4af283c349ad8b2e6f543b7cfebab1c;p=thirdparty%2Fhaproxy.git MINOR: checks: Don't support multiple host header for http-check send rule Only one host header definition is supported. There is no reason to define it several times. --- diff --git a/src/checks.c b/src/checks.c index e5a7ecf0cf..2ca1aca933 100644 --- a/src/checks.c +++ b/src/checks.c @@ -3742,7 +3742,7 @@ static struct tcpcheck_rule *parse_tcpcheck_send_http(char **args, int cur_arg, char *meth = NULL, *uri = NULL, *vsn = NULL; char *body = NULL, *comment = NULL; unsigned int flags = 0; - int i = 0; + int i = 0, host_hdr = -1; cur_arg++; while (*(args[cur_arg])) { @@ -3776,6 +3776,16 @@ static struct tcpcheck_rule *parse_tcpcheck_send_http(char **args, int cur_arg, memprintf(errmsg, "'%s' expects and as arguments", args[cur_arg]); goto error; } + + if (strcasecmp(args[cur_arg+1], "host") == 0) { + if (host_hdr >= 0) { + memprintf(errmsg, "'%s' header already defined (previous value is '%s')", + args[cur_arg+1], istptr(hdrs[host_hdr].v)); + goto error; + } + host_hdr = i; + } + hdrs[i].n = ist2(args[cur_arg+1], strlen(args[cur_arg+1])); hdrs[i].v = ist2(args[cur_arg+2], strlen(args[cur_arg+2])); i++;