dovecot-2.0-sslstream: mail_cache_register_fields(): Update cach...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:56:27 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/d7e946e3c0c4
changeset: 10339:d7e946e3c0c4
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Nov 16 19:59:41 2009 -0500
description:
mail_cache_register_fields(): Update caching decisions from input fields.

diffstat:

2 files changed, 9 insertions(+), 1 deletion(-)
src/lib-index/mail-cache-fields.c |    6 ++++++
src/lib-index/mail-cache.h        |    4 +++-

diffs (37 lines):

diff -r 69c2aa08cf2c -r d7e946e3c0c4 src/lib-index/mail-cache-fields.c
--- a/src/lib-index/mail-cache-fields.c	Mon Nov 16 19:38:13 2009 -0500
+++ b/src/lib-index/mail-cache-fields.c	Mon Nov 16 19:59:41 2009 -0500
@@ -69,6 +69,7 @@ void mail_cache_register_fields(struct m
 				struct mail_cache_field *fields,
 				unsigned int fields_count)
 {
+	struct mail_cache_field *orig_field;
 	void *orig_key, *orig_value;
 	char *name;
 	unsigned int new_idx;
@@ -83,6 +84,11 @@ void mail_cache_register_fields(struct m
 
 			fields[i].idx =
 				POINTER_CAST_TO(orig_value, unsigned int);
+
+			orig_field = &cache->fields[fields[i].idx].field;
+			if (orig_field->decision == MAIL_CACHE_DECISION_NO)
+				orig_field->decision = fields[i].decision;
+
 			(void)field_type_verify(cache, fields[i].idx,
 						fields[i].type,
 						fields[i].field_size);
diff -r 69c2aa08cf2c -r d7e946e3c0c4 src/lib-index/mail-cache.h
--- a/src/lib-index/mail-cache.h	Mon Nov 16 19:38:13 2009 -0500
+++ b/src/lib-index/mail-cache.h	Mon Nov 16 19:59:41 2009 -0500
@@ -44,7 +44,9 @@ struct mail_cache *mail_cache_create(str
 struct mail_cache *mail_cache_create(struct mail_index *index);
 void mail_cache_free(struct mail_cache **cache);
 
-/* Register fields. fields[].idx is updated to contain field index. */
+/* Register fields. fields[].idx is updated to contain field index.
+   If field already exists and its caching decision is NO, the decision is
+   updated to the input field's decision. */
 void mail_cache_register_fields(struct mail_cache *cache,
 				struct mail_cache_field *fields,
 				unsigned int fields_count);


More information about the dovecot-cvs mailing list