From 772f0dd545eb3837e2bc794f4c4863663be3742c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 26 Oct 2012 16:04:28 +0200 Subject: [PATCH] BUG/MEDIUM: command-line option -D must have precedence over "debug" From the beginning it has been said that -D must always be used on the command line from startup scripts so that haproxy does not accidentally stay in foreground when loaded from init script... Except that this has not been true for a long time now. The fix is easy and must be backported to 1.4 too which is affected. --- src/haproxy.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/haproxy.c b/src/haproxy.c index f296f716f..74c1e5b68 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -710,9 +710,16 @@ void init(int argc, char **argv) if (arg_mode & (MODE_DEBUG | MODE_FOREGROUND)) { /* command line debug mode inhibits configuration mode */ global.mode &= ~(MODE_DAEMON | MODE_QUIET); + global.mode |= (arg_mode & (MODE_DEBUG | MODE_FOREGROUND)); } - global.mode |= (arg_mode & (MODE_DAEMON | MODE_FOREGROUND | MODE_QUIET | - MODE_VERBOSE | MODE_DEBUG )); + + if (arg_mode & MODE_DAEMON) { + /* command line daemon mode inhibits foreground and debug modes mode */ + global.mode &= ~(MODE_DEBUG | MODE_FOREGROUND); + global.mode |= (arg_mode & MODE_DAEMON); + } + + global.mode |= (arg_mode & (MODE_QUIET | MODE_VERBOSE)); if ((global.mode & MODE_DEBUG) && (global.mode & (MODE_DAEMON | MODE_QUIET))) { Warning(" mode incompatible with and . Keeping only.\n");