dovecot-2.1: lda/lmtp: Moved raw user creation code to common ra...

dovecot at dovecot.org dovecot at dovecot.org
Sun Oct 2 15:55:02 EEST 2011


details:   http://hg.dovecot.org/dovecot-2.1/rev/5bd6c0fbfef1
changeset: 13577:5bd6c0fbfef1
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Oct 02 16:03:10 2011 +0300
description:
lda/lmtp: Moved raw user creation code to common raw_storage_create_from_set()

diffstat:

 src/lda/main.c                          |  18 +++---------------
 src/lib-storage/index/raw/raw-storage.c |  27 +++++++++++++++++++++++++++
 src/lib-storage/index/raw/raw-storage.h |   4 ++++
 src/lmtp/client.c                       |  24 +++---------------------
 4 files changed, 37 insertions(+), 36 deletions(-)

diffs (129 lines):

diff -r 967ad9ad37ff -r 5bd6c0fbfef1 src/lda/main.c
--- a/src/lda/main.c	Sun Oct 02 15:39:45 2011 +0300
+++ b/src/lda/main.c	Sun Oct 02 16:03:10 2011 +0300
@@ -213,7 +213,6 @@
 	struct mail_storage_service_input service_input;
 	struct mail_user *raw_mail_user;
 	struct mail_namespace *raw_ns;
-	struct mail_namespace_settings raw_ns_set;
 	struct mail_storage *storage;
 	struct mailbox *box;
 	struct raw_mailbox *raw_box;
@@ -371,21 +370,10 @@
 
 	/* create a separate mail user for the internal namespace */
 	sets = master_service_settings_get_others(master_service);
-	raw_mail_user = mail_user_alloc(user, ctx.dest_user->set_info, sets[0]);
-	raw_mail_user->autocreated = TRUE;
-	mail_user_set_home(raw_mail_user, "/");
-	if (mail_user_init(raw_mail_user, &errstr) < 0)
-		i_fatal("Raw user initialization failed: %s", errstr);
+	raw_mail_user =
+		raw_storage_create_from_set(ctx.dest_user->set_info, sets[0]);
+	raw_ns = raw_mail_user->namespaces;
 
-	memset(&raw_ns_set, 0, sizeof(raw_ns_set));
-	raw_ns_set.location = ":LAYOUT=none";
-	raw_ns_set.separator = "/";
-
-	raw_ns = mail_namespaces_init_empty(raw_mail_user);
-	raw_ns->flags |= NAMESPACE_FLAG_NOQUOTA | NAMESPACE_FLAG_NOACL;
-	raw_ns->set = &raw_ns_set;
-	if (mail_storage_create(raw_ns, "raw", 0, &errstr) < 0)
-		i_fatal("Couldn't create internal raw storage: %s", errstr);
 	if (path == NULL) {
 		input = create_raw_stream(&ctx, 0, &mtime);
 		i_stream_set_name(input, "stdin");
diff -r 967ad9ad37ff -r 5bd6c0fbfef1 src/lib-storage/index/raw/raw-storage.c
--- a/src/lib-storage/index/raw/raw-storage.c	Sun Oct 02 15:39:45 2011 +0300
+++ b/src/lib-storage/index/raw/raw-storage.c	Sun Oct 02 16:03:10 2011 +0300
@@ -12,6 +12,33 @@
 extern struct mail_storage raw_storage;
 extern struct mailbox raw_mailbox;
 
+struct mail_user *
+raw_storage_create_from_set(const struct setting_parser_info *set_info,
+			    const struct mail_user_settings *set)
+{
+	struct mail_user *user;
+	struct mail_namespace *ns;
+	struct mail_namespace_settings *ns_set;
+	const char *error;
+
+	user = mail_user_alloc("raw mail user", set_info, set);
+	user->autocreated = TRUE;
+	mail_user_set_home(user, "/");
+	if (mail_user_init(user, &error) < 0)
+		i_fatal("Raw user initialization failed: %s", error);
+
+	ns_set = p_new(user->pool, struct mail_namespace_settings, 1);
+	ns_set->location = ":LAYOUT=none";
+	ns_set->separator = "/";
+
+	ns = mail_namespaces_init_empty(user);
+	ns->flags |= NAMESPACE_FLAG_NOQUOTA | NAMESPACE_FLAG_NOACL;
+	ns->set = ns_set;
+	if (mail_storage_create(ns, "raw", 0, &error) < 0)
+		i_fatal("Couldn't create internal raw storage: %s", error);
+	return user;
+}
+
 static struct mail_storage *raw_storage_alloc(void)
 {
 	struct raw_storage *storage;
diff -r 967ad9ad37ff -r 5bd6c0fbfef1 src/lib-storage/index/raw/raw-storage.h
--- a/src/lib-storage/index/raw/raw-storage.h	Sun Oct 02 15:39:45 2011 +0300
+++ b/src/lib-storage/index/raw/raw-storage.h	Sun Oct 02 16:03:10 2011 +0300
@@ -24,4 +24,8 @@
 
 extern struct mail_vfuncs raw_mail_vfuncs;
 
+struct mail_user *
+raw_storage_create_from_set(const struct setting_parser_info *set_info,
+			    const struct mail_user_settings *set);
+
 #endif
diff -r 967ad9ad37ff -r 5bd6c0fbfef1 src/lmtp/client.c
--- a/src/lmtp/client.c	Sun Oct 02 15:39:45 2011 +0300
+++ b/src/lmtp/client.c	Sun Oct 02 16:03:10 2011 +0300
@@ -13,6 +13,7 @@
 #include "mail-namespace.h"
 #include "mail-storage.h"
 #include "mail-storage-service.h"
+#include "raw-storage.h"
 #include "main.h"
 #include "lda-settings.h"
 #include "lmtp-settings.h"
@@ -123,30 +124,11 @@
 
 static void client_raw_user_create(struct client *client)
 {
-	struct mail_namespace *raw_ns;
-	struct mail_namespace_settings *raw_ns_set;
-	const char *error;
 	void **sets;
 
 	sets = master_service_settings_get_others(master_service);
-
-	client->raw_mail_user = mail_user_alloc("raw user",
-						client->user_set_info, sets[0]);
-	client->raw_mail_user->autocreated = TRUE;
-	mail_user_set_home(client->raw_mail_user, "/");
-	if (mail_user_init(client->raw_mail_user, &error) < 0)
-		i_fatal("Raw user initialization failed: %s", error);
-
-	raw_ns_set = p_new(client->raw_mail_user->pool,
-			   struct mail_namespace_settings, 1);
-	raw_ns_set->location = ":LAYOUT=none";
-	raw_ns_set->separator = "/";
-
-	raw_ns = mail_namespaces_init_empty(client->raw_mail_user);
-	raw_ns->flags |= NAMESPACE_FLAG_NOQUOTA | NAMESPACE_FLAG_NOACL;
-	raw_ns->set = raw_ns_set;
-	if (mail_storage_create(raw_ns, "raw", 0, &error) < 0)
-		i_fatal("Couldn't create internal raw storage: %s", error);
+	client->raw_mail_user =
+		raw_storage_create_from_set(client->user_set_info, sets[0]);
 }
 
 static void client_read_settings(struct client *client)


More information about the dovecot-cvs mailing list