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