MINOR: http_htx/errors: prevent the use of some keywords when not in tcp/http mode

Prevent the use of "errorfile", "errorfiles" and various errorloc options
in proxies that are neither in TCP or HTTP mode.
This commit is contained in:
Aurelien DARRAGON 2023-09-19 18:16:56 +02:00 committed by Christopher Faulet
parent 225526dc16
commit b41b77b4cc
1 changed files with 23 additions and 0 deletions

View File

@ -2014,6 +2014,12 @@ static int proxy_parse_errorloc(char **args, int section, struct proxy *curpx,
goto out;
}
if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]);
ret = -1;
goto out;
}
if (*(args[1]) == 0 || *(args[2]) == 0) {
memprintf(errmsg, "%s : expects <status_code> and <url> as arguments.\n", args[0]);
ret = -1;
@ -2081,6 +2087,12 @@ static int proxy_parse_errorfile(char **args, int section, struct proxy *curpx,
goto out;
}
if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]);
ret = -1;
goto out;
}
if (*(args[1]) == 0 || *(args[2]) == 0) {
memprintf(errmsg, "%s : expects <status_code> and <file> as arguments.\n", args[0]);
ret = -1;
@ -2144,6 +2156,12 @@ static int proxy_parse_errorfiles(char **args, int section, struct proxy *curpx,
goto out;
}
if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
memprintf(err, "%s : requires TCP or HTTP mode.\n", args[0]);
ret = -1;
goto out;
}
if (!*(args[1])) {
memprintf(err, "%s : expects <name> as argument.", args[0]);
ret = -1;
@ -2207,6 +2225,11 @@ static int proxy_parse_http_error(char **args, int section, struct proxy *curpx,
goto out;
}
if (curpx->mode != PR_MODE_TCP && curpx->mode != PR_MODE_HTTP) {
memprintf(errmsg, "%s : requires TCP or HTTP mode.\n", args[0]);
goto error;
}
cur_arg = 1;
curpx->conf.args.ctx = ARGC_HERR;
reply = http_parse_http_reply((const char **)args, &cur_arg, curpx, 0, errmsg);