In check_config_validity() we evaluate some sample fetch expressions
(log-format, server rules, etc). These expressions may use external files like
maps.
If some particular 'default-path' was set in the global section before, it's no
longer applied to resolve file pathes in check_config_validity(). parse_cfg()
at the end of config parsing switches back to the initial cwd.
This fixes the issue #2886.
This patch should be backported in all stable versions since 2.4.0, including
2.4.0.
extern int non_global_section_parsed;
extern struct proxy *curproxy;
+extern char initial_cwd[PATH_MAX];
int cfg_parse_global(const char *file, int linenum, char **args, int inv);
int cfg_parse_listen(const char *file, int linenum, char **args, int inv);
DEFAULT_PATH_ORIGIN, /* "origin": paths are relative to default_path_origin */
} default_path_mode;
-static char initial_cwd[PATH_MAX];
+char initial_cwd[PATH_MAX];
static char current_cwd[PATH_MAX];
/* List head of all known configuration keywords */
err_code |= ERR_ALERT | ERR_FATAL | ERR_ABORT;
}
- if (*initial_cwd && chdir(initial_cwd) == -1) {
- ha_alert("Impossible to get back to initial directory '%s' : %s\n", initial_cwd, strerror(errno));
- err_code |= ERR_ALERT | ERR_FATAL;
- }
-
err:
ha_free(&cfg_scope);
cursection = NULL;
/* Note: global.nbthread will be initialized as part of this call */
err_code |= check_config_validity();
+ if (*initial_cwd && chdir(initial_cwd) == -1) {
+ ha_alert("Impossible to get back to initial directory '%s' : %s\n", initial_cwd, strerror(errno));
+ exit(1);
+ }
/* update the ready date to also account for the check time */
clock_update_date(0, 1);