aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
authoradamw <adamw@FreeBSD.org>2017-03-02 01:55:58 +0800
committeradamw <adamw@FreeBSD.org>2017-03-02 01:55:58 +0800
commit93607d923666b84e141200913977969e65cb5940 (patch)
treeda7306acd284e65befed208d98697cd0c29ecd23 /mail
parent39696565da53b0b62edcc559bbb6a1fa1f21e72c (diff)
downloadfreebsd-ports-gnome-93607d923666b84e141200913977969e65cb5940.tar.gz
freebsd-ports-gnome-93607d923666b84e141200913977969e65cb5940.tar.zst
freebsd-ports-gnome-93607d923666b84e141200913977969e65cb5940.zip
Add a patch from upstream that fixes a crash with the trash plugin:
Panic: file mail-namespace.c: line 709 (mail_namespace_find): assertion failed: (ns != NULL) Bump PORTREVISION. PR: 217364 Submitted by: Max Kostikov Obtained from: https://github.com/dovecot/core/commit/326fb016a23480e4ff8dcc03dc80e76812859bd6.patch
Diffstat (limited to 'mail')
-rw-r--r--mail/dovecot2/Makefile1
-rw-r--r--mail/dovecot2/files/patch-trash_plugin48
2 files changed, 49 insertions, 0 deletions
diff --git a/mail/dovecot2/Makefile b/mail/dovecot2/Makefile
index 149b91fce9ed..b8debe5d3c28 100644
--- a/mail/dovecot2/Makefile
+++ b/mail/dovecot2/Makefile
@@ -14,6 +14,7 @@
PORTNAME= dovecot
PORTVERSION= 2.2.28
+PORTREVISION= 1
CATEGORIES= mail ipv6
MASTER_SITES= https://www.dovecot.org/releases/${PORTVERSION:R}/
PKGNAMESUFFIX= 2
diff --git a/mail/dovecot2/files/patch-trash_plugin b/mail/dovecot2/files/patch-trash_plugin
new file mode 100644
index 000000000000..065d3d06f847
--- /dev/null
+++ b/mail/dovecot2/files/patch-trash_plugin
@@ -0,0 +1,48 @@
+From 326fb016a23480e4ff8dcc03dc80e76812859bd6 Mon Sep 17 00:00:00 2001
+From: Aki Tuomi <aki.tuomi@dovecot.fi>
+Date: Wed, 1 Mar 2017 09:15:29 +0200
+Subject: [PATCH] trash: Read settings after namespaces are loaded
+
+Fixes Panic: file mail-namespace.c: line 709 (mail_namespace_find): assertion failed: (ns != NULL)
+---
+ src/plugins/trash/trash-plugin.c | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/src/plugins/trash/trash-plugin.c b/src/plugins/trash/trash-plugin.c
+index 7129d3d..2e12578 100644
+--- src/plugins/trash/trash-plugin.c
++++ src/plugins/trash/trash-plugin.c
+@@ -348,17 +348,27 @@ trash_mail_user_created(struct mail_user *user)
+ } else {
+ tuser = p_new(user->pool, struct trash_user, 1);
+ MODULE_CONTEXT_SET(user, trash_user_module, tuser);
++ }
++}
+
+- if (read_configuration(user, env) == 0) {
+- trash_next_quota_test_alloc =
+- quser->quota->set->test_alloc;
+- quser->quota->set->test_alloc = trash_quota_test_alloc;
+- }
++static void
++trash_mail_namespaces_created(struct mail_namespace *namespaces)
++{
++ struct mail_user *user = namespaces->user;
++ struct trash_user *tuser = TRASH_USER_CONTEXT(user);
++ struct quota_user *quser = QUOTA_USER_CONTEXT(user);
++ const char *env = mail_user_plugin_getenv(user, "trash");
++
++ if (tuser != NULL && read_configuration(user, env) == 0) {
++ trash_next_quota_test_alloc =
++ quser->quota->set->test_alloc;
++ quser->quota->set->test_alloc = trash_quota_test_alloc;
+ }
+ }
+
+ static struct mail_storage_hooks trash_mail_storage_hooks = {
+- .mail_user_created = trash_mail_user_created
++ .mail_user_created = trash_mail_user_created,
++ .mail_namespaces_created = trash_mail_namespaces_created,
+ };
+
+ void trash_plugin_init(struct module *module)