From: Timo Sirainen Date: Wed, 20 Jan 2016 11:30:34 +0000 (+0200) Subject: lib-storage: Enable autoexpunge only when MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE is... X-Git-Tag: 2.2.22.rc1~320 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8cca3b43b28365cfee4dc733c00caaeab8ecd2ad;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Enable autoexpunge only when MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE is set. --- diff --git a/src/lib-storage/mail-storage-service.c b/src/lib-storage/mail-storage-service.c index 2ca7f27afd..c3fdd17097 100644 --- a/src/lib-storage/mail-storage-service.c +++ b/src/lib-storage/mail-storage-service.c @@ -661,6 +661,8 @@ mail_storage_service_init_post(struct mail_storage_service_ctx *ctx, p_strdup(mail_user->pool, user->input.session_id); mail_user->userdb_fields = user->input.userdb_fields == NULL ? NULL : p_strarray_dup(mail_user->pool, user->input.userdb_fields); + mail_user->autoexpunge_enabled = + (user->flags & MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE) != 0; mail_set = mail_user_set_get_storage_set(mail_user); diff --git a/src/lib-storage/mail-storage-service.h b/src/lib-storage/mail-storage-service.h index 9424a434c5..118e8fec19 100644 --- a/src/lib-storage/mail-storage-service.h +++ b/src/lib-storage/mail-storage-service.h @@ -33,7 +33,9 @@ enum mail_storage_service_flags { /* When executing doveconf, tell it to use sysexits codes */ MAIL_STORAGE_SERVICE_FLAG_USE_SYSEXITS = 0x400, /* Don't create namespaces, only the user. */ - MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES = 0x800 + MAIL_STORAGE_SERVICE_FLAG_NO_NAMESPACES = 0x800, + /* Enable autoexpunging at deinit. */ + MAIL_STORAGE_SERVICE_FLAG_AUTOEXPUNGE = 0x1000 }; struct mail_storage_service_input { diff --git a/src/lib-storage/mail-user.c b/src/lib-storage/mail-user.c index 6280466055..3db82d3104 100644 --- a/src/lib-storage/mail-user.c +++ b/src/lib-storage/mail-user.c @@ -164,7 +164,8 @@ void mail_user_unref(struct mail_user **_user) return; } - mail_user_autoexpunge(user); + if (user->autoexpunge_enabled) + mail_user_autoexpunge(user); user->deinitializing = TRUE; diff --git a/src/lib-storage/mail-user.h b/src/lib-storage/mail-user.h index df1aef9bc1..68b92f9cc2 100644 --- a/src/lib-storage/mail-user.h +++ b/src/lib-storage/mail-user.h @@ -89,6 +89,8 @@ struct mail_user { unsigned int admin:1; /* Enable all statistics gathering */ unsigned int stats_enabled:1; + /* Enable autoexpunging at deinit. */ + unsigned int autoexpunge_enabled:1; }; struct mail_user_module_register {