From: Willy Tarreau Date: Fri, 26 Oct 2012 14:04:28 +0000 (+0200) Subject: BUG/MEDIUM: command-line option -D must have precedence over "debug" X-Git-Tag: v1.5-dev13~100 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=772f0dd545eb3837e2bc794f4c4863663be3742c;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/src/haproxy.c b/src/haproxy.c index f296f716f4..74c1e5b68e 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");