Mercurial > dovecot > core-2.2
changeset 14680:3ffdb4bf36d3
master: Problems with creating base_dir/statedir should be fatals.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 24 Jun 2012 21:43:48 +0300 |
parents | f783fdbc3861 |
children | ca37d1577291 |
files | src/master/master-settings.c src/master/master-settings.h |
diffstat | 2 files changed, 12 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/src/master/master-settings.c Sun Jun 24 21:35:18 2012 +0300 +++ b/src/master/master-settings.c Sun Jun 24 21:43:48 2012 +0300 @@ -708,7 +708,7 @@ (void)closedir(dirp); } -bool master_settings_do_fixes(const struct master_settings *set) +void master_settings_do_fixes(const struct master_settings *set) { const char *login_dir, *empty_dir; struct stat st; @@ -716,19 +716,13 @@ /* since base dir is under /var/run by default, it may have been deleted. */ - if (mkdir_parents(set->base_dir, 0755) < 0 && errno != EEXIST) { - i_error("mkdir(%s) failed: %m", set->base_dir); - return FALSE; - } + if (mkdir_parents(set->base_dir, 0755) < 0 && errno != EEXIST) + i_fatal("mkdir(%s) failed: %m", set->base_dir); /* allow base_dir to be a symlink, so don't use lstat() */ - if (stat(set->base_dir, &st) < 0) { - i_error("stat(%s) failed: %m", set->base_dir); - return FALSE; - } - if (!S_ISDIR(st.st_mode)) { - i_error("%s is not a directory", set->base_dir); - return FALSE; - } + if (stat(set->base_dir, &st) < 0) + i_fatal("stat(%s) failed: %m", set->base_dir); + if (!S_ISDIR(st.st_mode)) + i_fatal("%s is not a directory", set->base_dir); if ((st.st_mode & 0755) != 0755) { i_warning("Fixing permissions of %s to be world-readable", set->base_dir); @@ -737,10 +731,8 @@ } /* Make sure our permanent state directory exists */ - if (mkdir_parents(PKG_STATEDIR, 0750) < 0 && errno != EEXIST) { - i_error("mkdir(%s) failed: %m", PKG_STATEDIR); - return FALSE; - } + if (mkdir_parents(PKG_STATEDIR, 0750) < 0 && errno != EEXIST) + i_fatal("mkdir(%s) failed: %m", PKG_STATEDIR); login_dir = t_strconcat(set->base_dir, "/login", NULL); if (settings_have_auth_unix_listeners_in(set, login_dir)) { @@ -758,10 +750,8 @@ unlink_sockets(login_dir, ""); } else { /* still make sure that login directory exists */ - if (mkdir(login_dir, 0755) < 0 && errno != EEXIST) { - i_error("mkdir(%s) failed: %m", login_dir); - return FALSE; - } + if (mkdir(login_dir, 0755) < 0 && errno != EEXIST) + i_fatal("mkdir(%s) failed: %m", login_dir); } empty_dir = t_strconcat(set->base_dir, "/empty", NULL); @@ -769,5 +759,4 @@ i_warning("Corrected permissions for empty directory " "%s", empty_dir); } - return TRUE; }
--- a/src/master/master-settings.h Sun Jun 24 21:35:18 2012 +0300 +++ b/src/master/master-settings.h Sun Jun 24 21:43:48 2012 +0300 @@ -29,6 +29,6 @@ extern const struct setting_parser_info master_setting_parser_info; -bool master_settings_do_fixes(const struct master_settings *set); +void master_settings_do_fixes(const struct master_settings *set); #endif