diff --git a/src/lib-sieve-tool/sieve-tool.c b/src/lib-sieve-tool/sieve-tool.c index b26aaa8b83e887f155fff76b97976b7c67a048c6..81411a8ed22f8ace0147622e9b13c53a488f3f8a 100644 --- a/src/lib-sieve-tool/sieve-tool.c +++ b/src/lib-sieve-tool/sieve-tool.c @@ -489,6 +489,13 @@ struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool) return tool->mail_raw_user; } +struct mail_storage_service_ctx * +sieve_tool_get_mail_storage_service(struct sieve_tool *tool) +{ + sieve_tool_init_mail_raw_user(tool); + return tool->storage_service; +} + /* * Commonly needed functionality */ diff --git a/src/lib-sieve-tool/sieve-tool.h b/src/lib-sieve-tool/sieve-tool.h index 02f41984aae6a237d0f9e125517bdb970378b1f0..8b8bde04625afb88254e31976419bef8f4396fbf 100644 --- a/src/lib-sieve-tool/sieve-tool.h +++ b/src/lib-sieve-tool/sieve-tool.h @@ -52,6 +52,8 @@ const char *sieve_tool_get_username(struct sieve_tool *tool); const char *sieve_tool_get_homedir(struct sieve_tool *tool); struct mail_user *sieve_tool_get_mail_user(struct sieve_tool *tool); struct mail_user *sieve_tool_get_mail_raw_user(struct sieve_tool *tool); +struct mail_storage_service_ctx * +sieve_tool_get_mail_storage_service(struct sieve_tool *tool); /* * Configuration diff --git a/src/lib-sieve/sieve-message.c b/src/lib-sieve/sieve-message.c index eedf432849da076c5659cf0b1c3c68c69d522ca4..229b2ea7ba248b5b0d93b36df0d5b16163385c30 100644 --- a/src/lib-sieve/sieve-message.c +++ b/src/lib-sieve/sieve-message.c @@ -16,6 +16,7 @@ #include "message-header-decode.h" #include "mail-html2text.h" #include "mail-storage.h" +#include "mail-storage-service.h" #include "mail-user.h" #include "smtp-params.h" #include "master-service.h" @@ -343,8 +344,12 @@ int sieve_message_substitute i_assert(input->blocking); if ( msgctx->raw_mail_user == NULL ) { + struct mail_storage_service_ctx *storage_service = + mail_storage_service_user_get_service_ctx( + mail_user->service_user); msgctx->raw_mail_user = - raw_storage_create_from_set(mail_user->unexpanded_set_parser); + raw_storage_create_from_set(storage_service, + mail_user->unexpanded_set_parser); } i_stream_seek(input, 0); diff --git a/src/lib-sieve/util/edit-mail.c b/src/lib-sieve/util/edit-mail.c index 9cbafa1db6377ced8d6a4c2602fdc0cffc478289..c001090ce5a5a38dbfa322ede19590d59ef9ea91 100644 --- a/src/lib-sieve/util/edit-mail.c +++ b/src/lib-sieve/util/edit-mail.c @@ -13,6 +13,7 @@ #include "message-header-encode.h" #include "message-header-decode.h" #include "mail-user.h" +#include "mail-storage-service.h" #include "mail-storage-private.h" #include "index-mail.h" #include "raw-storage.h" @@ -48,8 +49,12 @@ static unsigned int edit_mail_refcount = 0; static struct mail_user *edit_mail_raw_storage_get(struct mail_user *mail_user) { if (edit_mail_user == NULL) { + struct mail_storage_service_ctx *storage_service = + mail_storage_service_user_get_service_ctx( + mail_user->service_user); edit_mail_user = - raw_storage_create_from_set(mail_user->unexpanded_set_parser); + raw_storage_create_from_set(storage_service, + mail_user->unexpanded_set_parser); } edit_mail_refcount++; diff --git a/src/lib-sieve/util/mail-raw.c b/src/lib-sieve/util/mail-raw.c index 74b252c77381dfd36d08ab81059f470eaf191522..8a33b04ed0efb6e7a70b06c2de41a7316e02ea79 100644 --- a/src/lib-sieve/util/mail-raw.c +++ b/src/lib-sieve/util/mail-raw.c @@ -12,6 +12,7 @@ #include "message-address.h" #include "mbox-from.h" #include "raw-storage.h" +#include "mail-storage-service.h" #include "mail-namespace.h" #include "master-service.h" #include "master-service-settings.h" @@ -136,7 +137,11 @@ static struct istream *mail_raw_create_stream struct mail_user *mail_raw_user_create(struct mail_user *mail_user) { - return raw_storage_create_from_set(mail_user->unexpanded_set_parser); + struct mail_storage_service_ctx *storage_service = + mail_storage_service_user_get_service_ctx( + mail_user->service_user); + return raw_storage_create_from_set(storage_service, + mail_user->unexpanded_set_parser); } /*