mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-03-05 19:10:45 +00:00
[PATCH]: Check for duplicated conflicting proxies
Currently haproxy accepts a config with duplicated proxies (listen/fronted/backed/ruleset). This patch fix this, so the application will complain when there is an error. With this modification it is still possible to use the same name for two proxies (for example frontend&backend) as long there is no conflict: listen backend frontend ruleset listen - - - - backend - - OK - frontend - OK - - ruleset - - - - Best regards, Krzysztof Oledzki
This commit is contained in:
parent
d4e1b5ffa5
commit
365d1cd84c
@ -523,7 +523,28 @@ int cfg_parse_listen(const char *file, int linenum, char **args)
|
|||||||
file, linenum, args[0]);
|
file, linenum, args[0]);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (curproxy = proxy; curproxy != NULL; curproxy = curproxy->next) {
|
||||||
|
/*
|
||||||
|
* If there are two proxies with the same name only following
|
||||||
|
* combinations are allowed:
|
||||||
|
*
|
||||||
|
* listen backend frontend ruleset
|
||||||
|
* listen - - - -
|
||||||
|
* backend - - OK -
|
||||||
|
* frontend - OK - -
|
||||||
|
* ruleset - - - -
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!strcmp(curproxy->id, args[1]) &&
|
||||||
|
(rc!=(PR_CAP_FE|PR_CAP_RS) || curproxy->cap!=(PR_CAP_BE|PR_CAP_RS)) &&
|
||||||
|
(rc!=(PR_CAP_BE|PR_CAP_RS) || curproxy->cap!=(PR_CAP_FE|PR_CAP_RS))) {
|
||||||
|
Alert("parsing %s: duplicated proxy %s with conflicting capabilities: %X/%X!\n",
|
||||||
|
file, args[1], curproxy->cap, rc);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((curproxy = (struct proxy *)calloc(1, sizeof(struct proxy))) == NULL) {
|
if ((curproxy = (struct proxy *)calloc(1, sizeof(struct proxy))) == NULL) {
|
||||||
Alert("parsing [%s:%d] : out of memory.\n", file, linenum);
|
Alert("parsing [%s:%d] : out of memory.\n", file, linenum);
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
Reference in New Issue
Block a user