]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
master: Problems with creating base_dir/statedir should be fatals.
authorTimo Sirainen <tss@iki.fi>
Sun, 24 Jun 2012 18:43:48 +0000 (21:43 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 24 Jun 2012 18:43:48 +0000 (21:43 +0300)
src/master/master-settings.c
src/master/master-settings.h

index aa8542ce36dbb5c34151184097c506be1f6f7681..f2b71b2371d7bb6fa6d5f0d10365620c72a12057 100644 (file)
@@ -708,7 +708,7 @@ static void unlink_sockets(const char *path, const char *prefix)
        (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 @@ bool master_settings_do_fixes(const struct master_settings *set)
 
        /* 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 @@ bool master_settings_do_fixes(const struct master_settings *set)
        }
 
        /* 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 @@ bool master_settings_do_fixes(const struct master_settings *set)
                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 @@ bool master_settings_do_fixes(const struct master_settings *set)
                i_warning("Corrected permissions for empty directory "
                          "%s", empty_dir);
        }
-       return TRUE;
 }
index bc94270b579cd22d374310a7d33c6b21c53cc0e7..f2857e255fd3ad9414b6164f8318511fbca7532f 100644 (file)
@@ -29,6 +29,6 @@ struct master_settings {
 
 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