]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Added mail_user_init_fs_settings()
authorTimo Sirainen <tss@iki.fi>
Sat, 17 Jan 2015 00:31:24 +0000 (02:31 +0200)
committerTimo Sirainen <tss@iki.fi>
Sat, 17 Jan 2015 00:31:24 +0000 (02:31 +0200)
Also changed mailbox_list_init_fs() to use it internally.

src/lib-storage/mail-user.c
src/lib-storage/mail-user.h
src/lib-storage/mailbox-list.c

index 55dc2f5b26c7a0f2bd499d3e4acd84a4c1a7285b..57428652f6ec55bb1865c10f37f984124082947d 100644 (file)
@@ -11,6 +11,8 @@
 #include "strescape.h"
 #include "var-expand.h"
 #include "settings-parser.h"
+#include "iostream-ssl.h"
+#include "fs-api.h"
 #include "auth-master.h"
 #include "master-service.h"
 #include "mountpoint-list.h"
@@ -536,3 +538,21 @@ struct mail_user *mail_user_dup(struct mail_user *user)
        user2->session_id = p_strdup(user2->pool, user->session_id);
        return user2;
 }
+
+void mail_user_init_fs_settings(struct mail_user *user,
+                               struct fs_settings *fs_set,
+                               struct ssl_iostream_settings *ssl_set)
+{
+       const struct mail_storage_settings *mail_set =
+               mail_user_set_get_storage_set(user);
+
+       fs_set->username = user->username;
+       fs_set->session_id = user->session_id;
+       fs_set->base_dir = user->set->base_dir;
+       fs_set->temp_dir = user->set->mail_temp_dir;
+       fs_set->debug = user->mail_debug;
+
+       fs_set->ssl_client_set = ssl_set;
+       ssl_set->ca_dir = mail_set->ssl_client_ca_dir;
+       ssl_set->ca_file = mail_set->ssl_client_ca_file;
+}
index 6b3b2b4191e1f2dda4ec74b22b95b4ae75ee99aa..5aae88d734e4d959173195c452ed88775e6d4c9e 100644 (file)
@@ -6,6 +6,8 @@
 
 struct module;
 struct mail_user;
+struct fs_settings;
+struct ssl_iostream_settings;
 
 struct mail_user_vfuncs {
        void (*deinit)(struct mail_user *user);
@@ -159,4 +161,9 @@ bool mail_user_is_path_mounted(struct mail_user *user, const char *path,
 struct mail_storage *
 mail_user_get_storage_class(struct mail_user *user, const char *name);
 
+/* Initialize fs_settings from mail_user settings. */
+void mail_user_init_fs_settings(struct mail_user *user,
+                               struct fs_settings *fs_set,
+                               struct ssl_iostream_settings *ssl_set);
+
 #endif
index ce3b3aaf5b654c0f70878bf86d12f7797e0db36c..9ed2621610932c6d7d24c17d43e6704897a16873 100644 (file)
@@ -1830,18 +1830,10 @@ int mailbox_list_init_fs(struct mailbox_list *list, const char *driver,
        struct ssl_iostream_settings ssl_set;
 
        memset(&ssl_set, 0, sizeof(ssl_set));
-       ssl_set.ca_dir = list->mail_set->ssl_client_ca_dir;
-       ssl_set.ca_file = list->mail_set->ssl_client_ca_file;
-
        memset(&fs_set, 0, sizeof(fs_set));
-       fs_set.username = list->ns->user->username;
-       fs_set.session_id = list->ns->user->session_id;
-       fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
-       fs_set.base_dir = list->ns->user->set->base_dir;
-       fs_set.temp_dir = list->ns->user->set->mail_temp_dir;
-       fs_set.ssl_client_set = &ssl_set;
+       mail_user_init_fs_settings(list->ns->user, &fs_set, &ssl_set);
        fs_set.root_path = root_dir;
-       fs_set.debug = list->ns->user->mail_debug;
+       fs_set.temp_file_prefix = mailbox_list_get_global_temp_prefix(list);
 
        return fs_init(driver, args, &fs_set, fs_r, error_r);
 }