]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[MINOR] cfgparse: set backends to "balance roundrobin" by default
authorWilly Tarreau <w@1wt.eu>
Sun, 15 Mar 2009 13:06:41 +0000 (14:06 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 15 Mar 2009 13:11:27 +0000 (14:11 +0100)
When a backend has no LB algo specified and is not in dispatch, proxy
nor transparent mode, use "balance roundrobin" by default instead of
complaining. This will be particularly useful with stats and redirects.

doc/configuration.txt
src/cfgparse.c

index 55ea43888f5a144c04039ab4e179daaa8c84849b..3949764cb5edab397cd06707672aaf49bafb9a5e 100644 (file)
@@ -857,8 +857,9 @@ balance url_param <param> [check_post [<max_wait>]]
                 balance uri [len <len>] [depth <depth>]
                 balance url_param <param> [check_post [<max_wait>]]
 
-  The definition of the load balancing algorithm is mandatory for a backend
-  and limited to one per backend.
+  The load balancing algorithm of a backend is set to roundrobin when no other
+  algorithm, mode nor option have been set. The algorithm may only be set once
+  for each backend.
 
   Examples :
         balance roundrobin
index ec2c182bbb0deddd785b10a9b7ab3fc0e820df2c..08fad67793f3c9192941d6502678b4f712479507 100644 (file)
@@ -3146,32 +3146,33 @@ int readcfgfile(const char *file)
                        cfgerr++;
                }
 
-               if (curproxy->cap & PR_CAP_BE &&
-                   ((curproxy->mode != PR_MODE_HEALTH) &&
-                    !(curproxy->options & (PR_O_TRANSP | PR_O_HTTP_PROXY)) &&
-                    !(curproxy->lbprm.algo & BE_LB_ALGO) &&
-                    (*(int *)&curproxy->dispatch_addr.sin_addr == 0))) {
-                       Alert("parsing %s : %s '%s' has no dispatch address and is not in transparent or balance mode.\n",
-                             file, proxy_type_str(curproxy), curproxy->id);
-                       cfgerr++;
-               }
-
-               if ((curproxy->mode != PR_MODE_HEALTH) && (curproxy->lbprm.algo & BE_LB_ALGO)) {
-                       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);
-                               cfgerr++;
-                       }
+               if ((curproxy->cap & PR_CAP_BE) && (curproxy->mode != PR_MODE_HEALTH)) {
+                       if (curproxy->lbprm.algo & BE_LB_ALGO) {
+                               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);
+                                       cfgerr++;
+                               }
 #ifdef WE_DONT_SUPPORT_SERVERLESS_LISTENERS
-                       else if (curproxy->srv == NULL) {
-                               Alert("parsing %s : %s '%s' needs at least 1 server in balance mode.\n",
-                                     file, proxy_type_str(curproxy), curproxy->id);
-                               cfgerr++;
-                       }
+                               else if (curproxy->srv == NULL) {
+                                       Alert("parsing %s : %s '%s' needs at least 1 server in balance mode.\n",
+                                             file, proxy_type_str(curproxy), curproxy->id);
+                                       cfgerr++;
+                               }
 #endif
-                       else if (*(int *)&curproxy->dispatch_addr.sin_addr != 0) {
-                               Warning("parsing %s : dispatch address of %s '%s' will be ignored in balance mode.\n",
-                                       file, proxy_type_str(curproxy), curproxy->id);
+                               else if (*(int *)&curproxy->dispatch_addr.sin_addr != 0) {
+                                       Warning("parsing %s : dispatch address of %s '%s' will be ignored in balance mode.\n",
+                                               file, proxy_type_str(curproxy), curproxy->id);
+                               }
+                       }
+                       else if (!(curproxy->options & (PR_O_TRANSP | PR_O_HTTP_PROXY)) &&
+                                (*(int *)&curproxy->dispatch_addr.sin_addr == 0)) {
+                               /* If no LB algo is set in a backend, and we're not in
+                                * transparent mode, dispatch mode nor proxy mode, we
+                                * want to use balance roundrobin by default.
+                                */
+                               curproxy->lbprm.algo &= ~BE_LB_ALGO;
+                               curproxy->lbprm.algo |= BE_LB_ALGO_RR;
                        }
                }