]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MEDIUM: config: emit a warning on a frontend without listener
authorWilly Tarreau <w@1wt.eu>
Tue, 11 Aug 2015 09:36:45 +0000 (11:36 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 11 Aug 2015 10:17:41 +0000 (12:17 +0200)
Commit c6678e2 ("MEDIUM: config: authorize frontend and listen without bind")
completely removed the test for bind lines in frontends in order to make it
easier for automated tools to generate configs (eg: replacing a bind with
another one passing via a temporary config without any bind line). The
problem is that some common mistakes are totally hidden now. For example,
this apparently valid entry is silently ignored :

       listen 1.2.3.4:8000
           server s1 127.0.0.1:8000

Hint: 1.2.3.4:8000 is mistakenly the proxy name here.

Thus instead we now emit a warning to indicate that a frontend was found
with no listener. This should be backported to 1.5 to help spot abnormal
configurations.

src/cfgparse.c

index 516580873b51153cdd4a46d30e0750abd5c90287..98ccd5de2d286bbcea70d33e6ca231ec967fe0ae 100644 (file)
@@ -7245,6 +7245,12 @@ int check_config_validity()
                        break;
                }
 
+               if ((curproxy->cap & PR_CAP_FE) && LIST_ISEMPTY(&curproxy->conf.listeners)) {
+                       Warning("config : %s '%s' has no 'bind' directive. Please declare it as a backend if this was intended.\n",
+                               proxy_type_str(curproxy), curproxy->id);
+                       err_code |= ERR_WARN;
+               }
+
                if ((curproxy->cap & PR_CAP_BE) && (curproxy->mode != PR_MODE_HEALTH)) {
                        if (curproxy->lbprm.algo & BE_LB_KIND) {
                                if (curproxy->options & PR_O_TRANSP) {