diff --git a/src/lib-sieve-tool/mail-raw.c b/src/lib-sieve-tool/mail-raw.c index f5117c97deb94cefe532d4d1c4a2cb082a2e4fee..572161ade5e9b3819e106eeafdc8fec4464a38f0 100644 --- a/src/lib-sieve-tool/mail-raw.c +++ b/src/lib-sieve-tool/mail-raw.c @@ -113,7 +113,8 @@ void mail_raw_init(const char *user) { const char *error; - raw_mail_user = mail_user_init(user, NULL); + raw_mail_user = mail_user_init(user); + mail_user_set_home(raw_mail_user, NULL); raw_ns = mail_namespaces_init_empty(raw_mail_user); raw_ns->flags |= NAMESPACE_FLAG_INTERNAL; @@ -126,9 +127,9 @@ void mail_raw_init(const char *user) void mail_raw_deinit(void) { - mail_user_deinit(&raw_mail_user); + mail_user_unref(&raw_mail_user); } - + /* * Open raw mail data */ @@ -146,11 +147,11 @@ static struct mail_raw *mail_raw_create mailr->pool = pool; if ( mailfile == NULL ) { - mailr->box = mailbox_open(raw_ns->storage, "Dovecot Raw Mail", + mailr->box = mailbox_open(&raw_ns->storage, "Dovecot Raw Mail", input, MAILBOX_OPEN_NO_INDEX_FILES); } else { mtime = (time_t)-1; - mailr->box = mailbox_open(raw_ns->storage, mailfile, NULL, + mailr->box = mailbox_open(&raw_ns->storage, mailfile, NULL, MAILBOX_OPEN_NO_INDEX_FILES); } diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c index b5f30766a8b985ce6389cb02911dcd7a1dc576ba..04d0ade3ec43a81bbe9d31464be05ec2560d6f3e 100644 --- a/src/lib-sieve-tool/sieve-tool.c +++ b/src/lib-sieve-tool/sieve-tool.c @@ -85,12 +85,12 @@ const char *sieve_tool_get_user(void) process_euid = geteuid(); if ((pw = getpwuid(process_euid)) != NULL) { - user = t_strdup(pw->pw_name); - } - } + user = t_strdup(pw->pw_name); + } - if ( user == NULL || *user == '\0' ) { - i_fatal("couldn't lookup our username (uid=%s)", dec2str(process_euid)); + if ( user == NULL || *user == '\0' ) { + i_fatal("couldn't lookup our username (uid=%s)", dec2str(process_euid)); + } } return user; diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c index abcc9803c6aa01fe9fb4ae1d0f191774b4ed7f4b..517b4a49a6e9a5a41dba0fc2191eca8da84b61ef 100644 --- a/src/lib-sieve/sieve-actions.c +++ b/src/lib-sieve/sieve-actions.c @@ -168,28 +168,30 @@ static void act_store_get_storage_error static struct mailbox *act_store_mailbox_open (const struct sieve_action_exec_env *aenv, struct mail_namespace *ns, const char *folder) { + struct mail_storage **storage = &(aenv->estatus->last_storage); enum mailbox_open_flags open_flags = MAILBOX_OPEN_FAST | MAILBOX_OPEN_KEEP_RECENT | MAILBOX_OPEN_SAVEONLY | MAILBOX_OPEN_POST_SESSION; struct mailbox *box; if (strcasecmp(folder, "INBOX") == 0) { - /* Deliveries to INBOX must always succeed, regardless of ACLs */ - open_flags |= MAILBOX_OPEN_IGNORE_ACLS; - } + /* Deliveries to INBOX must always succeed, regardless of ACLs */ + open_flags |= MAILBOX_OPEN_IGNORE_ACLS; + } + + *storage = ns->storage; - box = mailbox_open - (ns->storage, folder, NULL, open_flags); + box = mailbox_open(storage, folder, NULL, open_flags); if ( box == NULL && aenv->scriptenv->mailbox_autocreate ) { enum mail_error error; - (void)mail_storage_get_last_error(ns->storage, &error); + (void)mail_storage_get_last_error(*storage, &error); if ( error != MAIL_ERROR_NOTFOUND ) return NULL; /* Try creating it */ - if ( mail_storage_mailbox_create(ns->storage, folder, FALSE) < 0 ) + if ( mail_storage_mailbox_create(*storage, folder, FALSE) < 0 ) return NULL; if ( aenv->scriptenv->mailbox_autosubscribe ) { @@ -198,8 +200,7 @@ static struct mailbox *act_store_mailbox_open } /* Try opening again */ - box = mailbox_open - (ns->storage, folder, NULL, open_flags); + box = mailbox_open(storage, folder, NULL, open_flags); if (box == NULL) return NULL; @@ -233,8 +234,6 @@ static bool act_store_start if ( ns != NULL ) { box = act_store_mailbox_open(aenv, ns, ctx->folder); - - aenv->estatus->last_storage = ns->storage; } } diff --git a/src/sieve-tools/sieve-exec.c b/src/sieve-tools/sieve-exec.c index bf4ac5c339dc320895036eb37d5291fe9934a777..cc66524767ee7816e38ac63acac5abe4b23e9a32 100644 --- a/src/sieve-tools/sieve-exec.c +++ b/src/sieve-tools/sieve-exec.c @@ -3,8 +3,8 @@ #include "lib.h" #include "ostream.h" -#include "mail-storage.h" #include "mail-namespace.h" +#include "mail-storage.h" #include "env-util.h" #include "sieve.h" @@ -161,6 +161,7 @@ int main(int argc, char **argv) home = getenv("HOME"); /* Initialize mail storages */ + mail_users_init(getenv("AUTH_SOCKET_PATH"), getenv("DEBUG") != NULL); mail_storage_init(); mail_storage_register_all(); mailbox_list_register_all(); @@ -173,9 +174,10 @@ int main(int argc, char **argv) env_put("NAMESPACE_1_SEP=."); env_put("NAMESPACE_1_SUBSCRIPTIONS=1"); - mail_user = mail_user_init(user, home); - if (mail_namespaces_init(mail_user) < 0) - i_fatal("Namespace initialization failed"); + mail_user = mail_user_init(user); + mail_user_set_home(mail_user, home); + if (mail_namespaces_init(mail_user) < 0) + i_fatal("Namespace initialization failed"); ns = mail_user->namespaces; } @@ -238,10 +240,11 @@ int main(int argc, char **argv) /* De-initialize mail user object */ if ( mail_user != NULL ) - mail_user_deinit(&mail_user); + mail_user_unref(&mail_user); /* De-intialize mail storages */ mail_storage_deinit(); + mail_users_deinit(); sieve_tool_deinit(); diff --git a/src/sieve-tools/sieve-test.c b/src/sieve-tools/sieve-test.c index 41508a1f1a6ea817210f1470b6dcf9742668b958..854942593451d9da38986449343e8d9bc9497bb5 100644 --- a/src/sieve-tools/sieve-test.c +++ b/src/sieve-tools/sieve-test.c @@ -3,6 +3,7 @@ #include "lib.h" #include "ostream.h" +#include "mail-namespace.h" #include "mail-storage.h" #include "sieve.h" @@ -134,6 +135,7 @@ int main(int argc, char **argv) user = sieve_tool_get_user(); /* Initialize mail storages */ + mail_users_init(getenv("AUTH_SOCKET_PATH"), getenv("DEBUG") != NULL); mail_storage_init(); mail_storage_register_all(); mailbox_list_register_all(); @@ -188,6 +190,7 @@ int main(int argc, char **argv) /* De-initialize mail storages */ mail_storage_deinit(); + mail_users_deinit(); sieve_tool_deinit(); return 0; diff --git a/src/testsuite/testsuite.c b/src/testsuite/testsuite.c index 10c81f9ce41feadb92113e4c1bc65b74739d4540..465bbe088d54b7b0c6787c2c76333e7eeef50e6d 100644 --- a/src/testsuite/testsuite.c +++ b/src/testsuite/testsuite.c @@ -7,6 +7,7 @@ #include "ostream.h" #include "hostpid.h" #include "mail-storage.h" +#include "mail-namespace.h" #include "env-util.h" #include "sieve.h" @@ -164,6 +165,7 @@ int main(int argc, char **argv) sieve_tool_dump_binary_to(sbin, dumpfile); /* Initialize mail storages */ + mail_users_init(getenv("AUTH_SOCKET_PATH"), getenv("DEBUG") != NULL); mail_storage_init(); mail_storage_register_all(); mailbox_list_register_all(); @@ -200,6 +202,7 @@ int main(int argc, char **argv) /* De-initialize mail storages */ mail_storage_deinit(); + mail_users_deinit(); /* De-initialize testsuite */ testsuite_tool_deinit();