changeset 16763:194383b51917

lib-storage: Added a separate prefix for server metadata that aren't deleted with INBOX.
author Timo Sirainen <tss@iki.fi>
date Tue, 17 Sep 2013 23:32:57 +0300
parents 393c389b1540
children a7be7ee98538
files src/lib-storage/index/index-storage.c src/lib-storage/mail-storage.h
diffstat 2 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-storage.c	Tue Sep 17 23:12:03 2013 +0300
+++ b/src/lib-storage/index/index-storage.c	Tue Sep 17 23:32:57 2013 +0300
@@ -614,9 +614,15 @@
 	struct mailbox_attribute_iter *iter;
 	const char *key;
 	int ret = 0;
+	bool inbox = t->box->inbox_any;
 
 	iter = mailbox_attribute_iter_init(t->box, type, "");
 	while ((key = mailbox_attribute_iter_next(iter)) != NULL) {
+		if (inbox &&
+		    strncmp(key, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER,
+			    strlen(MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER)) == 0)
+			continue;
+
 		if (mailbox_attribute_unset(t, type, key) < 0)
 			ret = -1;
 	}
--- a/src/lib-storage/mail-storage.h	Tue Sep 17 23:12:03 2013 +0300
+++ b/src/lib-storage/mail-storage.h	Tue Sep 17 23:32:57 2013 +0300
@@ -209,7 +209,12 @@
 #define MAILBOX_ATTRIBUTE_PREFIX_DOVECOT "vendor/vendor.dovecot/"
 /* Prefix used for attributes reserved for Dovecot's internal use. Normal
    users cannot access these in any way. */
-#define MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT "vendor/vendor.dovecot/pvt/"
+#define MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT \
+	MAILBOX_ATTRIBUTE_PREFIX_DOVECOT"pvt/"
+/* Prefix used for server attributes in INBOX. INBOX deletion won't delete
+   any attributes under this prefix. */
+#define MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT_SERVER \
+	MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT"server/"
 
 enum mail_attribute_type {
 	MAIL_ATTRIBUTE_TYPE_PRIVATE,