From: Willy Tarreau Date: Mon, 17 Sep 2007 08:17:23 +0000 (+0200) Subject: [MEDIUM] fix configuration sanity checks for TCP listeners X-Git-Tag: v1.3.12.2~7 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=7c1ffc1e8f06bf13ceec4c238054611cf9371ab8;p=haproxy.git [MEDIUM] fix configuration sanity checks for TCP listeners A log chain of if/else prevented many sanity checks from being performed on TCP listeners, resulting in dangerous configs being accepted. Removed the offending 'else'. --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 783e18979..98dba978d 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -2411,7 +2411,8 @@ int readcfgfile(const char *file) file, proxy_type_str(curproxy), curproxy->id); cfgerr++; } - else if ((curproxy->mode != PR_MODE_HEALTH) && (curproxy->options & PR_O_BALANCE)) { + + if ((curproxy->mode != PR_MODE_HEALTH) && (curproxy->options & PR_O_BALANCE)) { if (curproxy->options & PR_O_TRANSP) { Alert("parsing %s : %s '%s' cannot use both transparent and balance mode.\n", file, proxy_type_str(curproxy), curproxy->id); @@ -2429,15 +2430,12 @@ int readcfgfile(const char *file) file, proxy_type_str(curproxy), curproxy->id); } } - else if (curproxy->mode == PR_MODE_TCP || curproxy->mode == PR_MODE_HEALTH) { /* TCP PROXY or HEALTH CHECK */ + + if (curproxy->mode == PR_MODE_TCP || curproxy->mode == PR_MODE_HEALTH) { /* TCP PROXY or HEALTH CHECK */ if (curproxy->cookie_name != NULL) { Warning("parsing %s : cookie will be ignored for %s '%s'.\n", file, proxy_type_str(curproxy), curproxy->id); } - if ((newsrv = curproxy->srv) != NULL) { - Warning("parsing %s : servers will be ignored for %s '%s'.\n", - file, proxy_type_str(curproxy), curproxy->id); - } if (curproxy->rsp_exp != NULL) { Warning("parsing %s : server regular expressions will be ignored for %s '%s'.\n", file, proxy_type_str(curproxy), curproxy->id); @@ -2458,7 +2456,15 @@ int readcfgfile(const char *file) file, proxy_type_str(curproxy), curproxy->id); } } - else if (curproxy->mode == PR_MODE_HTTP) { /* HTTP PROXY */ + + if (curproxy->mode == PR_MODE_HEALTH) { /* TCP PROXY or HEALTH CHECK */ + if ((newsrv = curproxy->srv) != NULL) { + Warning("parsing %s : servers will be ignored for %s '%s'.\n", + file, proxy_type_str(curproxy), curproxy->id); + } + } + + if (curproxy->mode == PR_MODE_HTTP) { /* HTTP PROXY */ if ((curproxy->cookie_name != NULL) && ((newsrv = curproxy->srv) == NULL)) { Alert("parsing %s : HTTP proxy %s has a cookie but no server list !\n", file, curproxy->id);