From: Willy Tarreau Date: Thu, 2 Feb 2012 16:48:18 +0000 (+0100) Subject: MEDIUM: improve config check return codes X-Git-Tag: v1.5-dev8~34 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8b15ba19c3694e0d3692e292b9504ea797366efb;p=thirdparty%2Fhaproxy.git MEDIUM: improve config check return codes When checking a configuration file using "-c -f xxx", sometimes it is reported that a config is valid while it will later fail (eg: no enabled listener). Instead, let's improve the return values : - return 0 if config is 100% OK - return 1 if config has errors - return 2 if config is OK but no listener nor peer is enabled --- diff --git a/src/cfgparse.c b/src/cfgparse.c index 6fa549a37d..73b7f7135c 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -5574,12 +5574,6 @@ int check_config_validity() proxy = next; } - if ((curproxy = proxy) == NULL) { - Alert("config : no line. Nothing to do !\n"); - err_code |= ERR_ALERT | ERR_FATAL; - goto out; - } - while (curproxy != NULL) { struct switching_rule *rule; struct sticking_rule *mrule; diff --git a/src/haproxy.c b/src/haproxy.c index 363f30617c..66cf18f594 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -548,8 +548,24 @@ void init(int argc, char **argv) } if (global.mode & MODE_CHECK) { - qfprintf(stdout, "Configuration file is valid\n"); - exit(0); + struct peers *pr; + struct proxy *px; + + for (pr = peers; pr; pr = pr->next) + if (pr->peers_fe) + break; + + for (px = proxy; px; px = px->next) + if (px->state == PR_STNEW && px->listen) + break; + + if (pr || px) { + /* At least one peer or one listener has been found */ + qfprintf(stdout, "Configuration file is valid\n"); + exit(0); + } + qfprintf(stdout, "Configuration file has no error but will not start (no listener) => exit(2).\n"); + exit(2); } global_listener_queue_task = task_new();