From: Timo Sirainen Date: Wed, 24 Jan 2018 16:01:48 +0000 (+0200) Subject: lib-index: Write forced cache decision changes immediately to cache file X-Git-Tag: 2.3.9~2432 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ee986fe3dfc5ce700d232d2f6bc1b47aef1bfe7;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Write forced cache decision changes immediately to cache file When mail_always/never_cache_fields doesn't match the current caching decisions in the cache file, write the updated decisions to the file. --- diff --git a/src/lib-index/mail-cache-fields.c b/src/lib-index/mail-cache-fields.c index 86c6bf5f64..ac2c33a9b7 100644 --- a/src/lib-index/mail-cache-fields.c +++ b/src/lib-index/mail-cache-fields.c @@ -405,7 +405,10 @@ int mail_cache_header_fields_read(struct mail_cache *cache) enum mail_cache_decision_type cur_dec = cache->fields[fidx].field.decision; if ((cur_dec & MAIL_CACHE_DECISION_FORCED) != 0) { - /* Forced decision. */ + /* Forced decision. If the decision has + changed, update the fields in the file. */ + if ((cur_dec & ~MAIL_CACHE_DECISION_FORCED) != file_dec) + cache->field_header_write_pending = TRUE; } else if (cache->fields[fidx].decision_dirty) { /* Decisions have recently been updated internally. Don't change them. */