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
proxy = next;
}
- if ((curproxy = proxy) == NULL) {
- Alert("config : no <listen> line. Nothing to do !\n");
- err_code |= ERR_ALERT | ERR_FATAL;
- goto out;
- }
-
while (curproxy != NULL) {
struct switching_rule *rule;
struct sticking_rule *mrule;
}
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();