From: Valentine Krasnobaeva Date: Wed, 26 Jun 2024 16:29:47 +0000 (+0200) Subject: REORG: init: do MODE_CHECK_CONDITION logic first X-Git-Tag: v3.1-dev2~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=10de58fbfbf66db257eeda63df6b4bd892939036;p=thirdparty%2Fhaproxy.git REORG: init: do MODE_CHECK_CONDITION logic first In MODE_CHECK_CONDITION we only parse check_condition string, provided by '-cc', and then we evaluate it. Haproxy process terminates at the end of {if..else} block anyway, if the test has failed or passed. So, it will be more appropriate to perform MODE_CHECK_CONDITION test first and then do all other process runtime mode verifications. --- diff --git a/src/haproxy.c b/src/haproxy.c index afccf09126..155779e3ec 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2063,26 +2063,6 @@ static void init(int argc, char **argv) global.mode &= ~MODE_MWORKER; } - /* set the atexit functions when not doing configuration check */ - if (!(global.mode & (MODE_CHECK | MODE_CHECK_CONDITION)) - && (getenv("HAPROXY_MWORKER_REEXEC") != NULL)) { - - if (global.mode & MODE_MWORKER) { - atexit_flag = 1; - atexit(reexec_on_failure); - } else if (global.mode & MODE_MWORKER_WAIT) { - atexit_flag = 1; - atexit(exit_on_waitmode_failure); - } - } - - if (change_dir && chdir(change_dir) < 0) { - ha_alert("Could not change to directory %s : %s\n", change_dir, strerror(errno)); - exit(1); - } - - usermsgs_clr("config"); - if (global.mode & MODE_CHECK_CONDITION) { int result; @@ -2144,6 +2124,25 @@ static void init(int argc, char **argv) exit(result ? 0 : 1); } + /* set the atexit functions when not doing configuration check */ + if (!(global.mode & MODE_CHECK) && (getenv("HAPROXY_MWORKER_REEXEC") != NULL)) { + + if (global.mode & MODE_MWORKER) { + atexit_flag = 1; + atexit(reexec_on_failure); + } else if (global.mode & MODE_MWORKER_WAIT) { + atexit_flag = 1; + atexit(exit_on_waitmode_failure); + } + } + + if (change_dir && chdir(change_dir) < 0) { + ha_alert("Could not change to directory %s : %s\n", change_dir, strerror(errno)); + exit(1); + } + + usermsgs_clr("config"); + /* in wait mode, we don't try to read the configuration files */ if (!(global.mode & MODE_MWORKER_WAIT)) { char *env_cfgfiles = NULL;