From: Timo Sirainen Date: Mon, 13 Apr 2009 16:36:34 +0000 (-0400) Subject: Fixed deliver -p. X-Git-Tag: 2.0.alpha1~969 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=18085232daabb5d6750c28110ee3d36c41987448;p=thirdparty%2Fdovecot%2Fcore.git Fixed deliver -p. --HG-- branch : HEAD --- diff --git a/src/deliver/deliver.c b/src/deliver/deliver.c index b58580e975..8e066b270c 100644 --- a/src/deliver/deliver.c +++ b/src/deliver/deliver.c @@ -14,7 +14,9 @@ #include "rfc822-parser.h" #include "message-address.h" #include "imap-utf7.h" +#include "settings-parser.h" #include "master-service.h" +#include "master-service-settings.h" #include "mail-storage-service.h" #include "mail-namespace.h" #include "raw-storage.h" @@ -384,6 +386,7 @@ int main(int argc, char *argv[]) const char *mailbox = "INBOX"; const char *destaddr, *user, *errstr, *path, *getopt_str; struct mail_user *mail_user, *raw_mail_user; + struct mail_user_settings *raw_user_set; struct mail_namespace *raw_ns; struct mail_namespace_settings raw_ns_set; struct mail_storage *storage; @@ -394,6 +397,7 @@ int main(int argc, char *argv[]) struct mailbox_header_lookup_ctx *headers_ctx; struct mail *mail; char cwd[PATH_MAX]; + pool_t settings_pool; uid_t process_euid; bool stderr_rejection = FALSE; time_t mtime; @@ -527,7 +531,13 @@ int main(int argc, char *argv[]) duplicate_init(mail_user_set_get_storage_set(mail_user->set)); /* create a separate mail user for the internal namespace */ - raw_mail_user = mail_user_alloc(user, mail_user->unexpanded_set); + if (master_service_set(service, "mail_full_filesystem_access=yes") < 0) + i_unreached(); + + settings_pool = pool_alloconly_create("raw settings pool", 4096); + raw_user_set = settings_dup(&mail_user_setting_parser_info, + mail_user->unexpanded_set, settings_pool); + raw_mail_user = mail_user_alloc(user, raw_user_set); mail_user_set_home(raw_mail_user, "/"); if (mail_user_init(raw_mail_user, &errstr) < 0) i_fatal("Raw user initialization failed: %s", errstr); @@ -650,6 +660,7 @@ int main(int argc, char *argv[]) mail_user_unref(&mail_user); mail_user_unref(&raw_mail_user); duplicate_deinit(); + pool_unref(&settings_pool); mail_storage_service_deinit_user(); master_service_deinit(&service);