MEDIUM: mworker: master wait mode use its own initialization

The master now use a poll loop, which should be initialized even in wait
mode. We need to init some variables if we didn't success to load the
configuration file.
diff --git a/src/haproxy.c b/src/haproxy.c
index 9dfdf9b..0844af3 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -770,6 +770,8 @@
 	mworker_unblock_signals();
 	mworker_cleanlisteners();
 
+	tid = 0;
+
 	global.nbthread = 1;
 	relative_pid = 1;
 	pid_bit = 1;
@@ -783,6 +785,40 @@
 }
 
 /*
+ * This function initialize haproxy for the master wait mode, it won't fork any
+ * new process and won't parse the configuration
+ */
+static int mworker_wait_mode()
+{
+
+	global.maxsock = 10; /* reserve 10 fds ; will be incremented by socket eaters */
+
+	if (!(global.tune.options & GTUNE_USE_KQUEUE))
+		disable_poller("kqueue");
+
+	if (!(global.tune.options & GTUNE_USE_EPOLL))
+		disable_poller("epoll");
+
+	if (!(global.tune.options & GTUNE_USE_POLL))
+		disable_poller("poll");
+
+	if (!(global.tune.options & GTUNE_USE_SELECT))
+		disable_poller("select");
+
+	if (global.tune.maxpollevents <= 0)
+		global.tune.maxpollevents = MAX_POLL_EVENTS;
+
+	init_pollers();
+
+
+	mworker_loop();
+
+	/* should never be there */
+
+	return -1;
+}
+
+/*
  * Reexec the process in failure mode, instead of exiting
  */
 void reexec_on_failure()
@@ -1517,7 +1553,7 @@
 	if ((global.mode & MODE_MWORKER) && (getenv("HAPROXY_MWORKER_WAIT_ONLY") != NULL)) {
 
 		unsetenv("HAPROXY_MWORKER_WAIT_ONLY");
-		mworker_loop();
+		mworker_wait_mode();
 	}
 
 	if ((global.mode & MODE_MWORKER) && (getenv("HAPROXY_MWORKER_REEXEC") != NULL)) {