Skip to content

Commit 303a665

Browse files
committed
MEDIUM: cfgparse: warn about proxies having the same names
As discussed below, there are too many problems and uncaught bugs in the parser when trying to support proxies having similar names but different types. There's specific code to detect the presence of stick-tables in a pair of such proxies for example. It's even possible that certain combinations of backend+listen that were not previously detected have some nasty side effects. According to the proposal in the discussion, this is now deprecated in 3.1 (thus we emit a warning) and will become forbidden in 3.3. A backport might be useful, but reporting a diag_warning only, not a classical warning, so as not to break setups running in zero-warning mode. It was verified with a config involving all 9 combinations of (frontend,backend,listen) followed by one of the same three that all collisions are now properly blocked and that only back+front are kept and emit a warning. Link: https://www.mail-archive.com/[email protected]/msg45185.html
1 parent c70906c commit 303a665

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/cfgparse-listen.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,16 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
285285
curproxy->id, curproxy->conf.file, curproxy->conf.line);
286286
err_code |= ERR_ALERT | ERR_FATAL;
287287
}
288+
else {
289+
curproxy = proxy_find_by_name(args[1], 0, 0);
290+
if (curproxy) {
291+
/* different capabilities but still same name: forbidden soon */
292+
ha_warning("Parsing [%s:%d]: %s '%s' has the same name as %s '%s' declared at %s:%d. This is dangerous and will not be supported anymore in version 3.3.\n",
293+
file, linenum, proxy_cap_str(rc), args[1], proxy_type_str(curproxy),
294+
curproxy->id, curproxy->conf.file, curproxy->conf.line);
295+
err_code |= ERR_WARN;
296+
}
297+
}
288298

289299
curproxy = log_forward_by_name(args[1]);
290300
if (curproxy) {

0 commit comments

Comments
 (0)