Introduce the new <no_listener_mode> global variable to define a new operating mode
for haproxy. This variable can be set to 1 to allow haproxy to start without
any listeners. Without such a setting, haproxy refuses to start without listener.
During the initialization cycle, setting this variable to 1 ensures that the
lack of configured listeners is no longer treated as a fatal error. This allows
programs based on haproxy source code to initialize the stack and use its
features even without a frontend. This will be the case for haload.
extern int daemon_fd[2];
extern int devnullfd;
extern int fileless_mode;
+extern int no_listener_mode;
extern struct cfgfile fileless_cfg;
/* storage for collected libs */
int daemon_fd[2] = {-1, -1}; /* pipe to communicate with parent process */
int devnullfd = -1;
int fileless_mode;
+int no_listener_mode;
struct cfgfile fileless_cfg;
extern __attribute__((weak)) void haproxy_init_args(int argc, char **argv);
extern __attribute__((weak)) char **copy_argv(int argc, char **argv);
}
/* Exit in standalone mode, if no listeners found */
- if (!(global.mode & MODE_MWORKER) && listeners == 0) {
+ if (!(global.mode & MODE_MWORKER) && !no_listener_mode && listeners == 0) {
ha_alert("[%s.main()] No enabled listener found (check for 'bind' directives) ! Exiting.\n", argv[0]);
/* Note: we don't have to send anything to the old pids because we
* never stopped them. */