Mercurial > dovecot > core-2.2
changeset 13577:5bd6c0fbfef1
lda/lmtp: Moved raw user creation code to common raw_storage_create_from_set()
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 02 Oct 2011 16:03:10 +0300 |
parents | 967ad9ad37ff |
children | 7f7724f28d78 |
files | src/lda/main.c src/lib-storage/index/raw/raw-storage.c src/lib-storage/index/raw/raw-storage.h src/lmtp/client.c |
diffstat | 4 files changed, 37 insertions(+), 36 deletions(-) [+] |
line wrap: on
line diff
--- 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");
--- 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;
--- 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
--- 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)