changeset 17298:c1719de47d5e

lib-storage: mail_never_cache_fields=* means now to disable all caching.
author Timo Sirainen <tss@iki.fi>
date Wed, 30 Apr 2014 18:46:55 +0300
parents 5c4205a95028
children 501a19fc2747
files src/lib-storage/index/index-mail.c src/lib-storage/index/index-storage.c src/lib-storage/mail-storage-private.h
diffstat 3 files changed, 11 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c	Wed Apr 30 17:37:43 2014 +0300
+++ b/src/lib-storage/index/index-mail.c	Wed Apr 30 18:46:55 2014 +0300
@@ -512,7 +512,8 @@
 	}
 
 	if (!mail->data.no_caching &&
-	    mail->data.dont_cache_field_idx != field_idx) {
+	    mail->data.dont_cache_field_idx != field_idx &&
+	    !_mail->box->mail_cache_disabled) {
 		mail_cache_add(_mail->transaction->cache_trans, _mail->seq,
 			       field_idx, data, data_size);
 	}
--- a/src/lib-storage/index/index-storage.c	Wed Apr 30 17:37:43 2014 +0300
+++ b/src/lib-storage/index/index-storage.c	Wed Apr 30 18:46:55 2014 +0300
@@ -71,6 +71,13 @@
 	       sizeof(global_cache_fields));
 	mail_cache_register_fields(cache, ibox->cache_fields,
 				   MAIL_INDEX_CACHE_FIELD_COUNT);
+
+	if (strcmp(set->mail_never_cache_fields, "*") == 0) {
+		/* all caching disabled for now */
+		box->mail_cache_disabled = TRUE;
+		return;
+	}
+
 	set_cache_decisions(cache, "mail_cache_fields",
 			    set->mail_cache_fields,
 			    MAIL_CACHE_DECISION_TEMP);
--- a/src/lib-storage/mail-storage-private.h	Wed Apr 30 17:37:43 2014 +0300
+++ b/src/lib-storage/mail-storage-private.h	Wed Apr 30 18:46:55 2014 +0300
@@ -343,6 +343,8 @@
 	unsigned int disallow_new_keywords:1;
 	/* Mailbox has been synced at least once */
 	unsigned int synced:1;
+	/* Updating cache file is disabled */
+	unsigned int mail_cache_disabled:1;
 };
 
 struct mail_vfuncs {