]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Fixed deliver -p.
authorTimo Sirainen <tss@iki.fi>
Mon, 13 Apr 2009 16:36:34 +0000 (12:36 -0400)
committerTimo Sirainen <tss@iki.fi>
Mon, 13 Apr 2009 16:36:34 +0000 (12:36 -0400)
--HG--
branch : HEAD

src/deliver/deliver.c

index b58580e9759b01fe61e7840ec3597a5c03e5d045..8e066b270c8311d1b5e0121609270b34d2dbb8c4 100644 (file)
@@ -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);