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.2.35~130 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=040e8d386478873174d15667b7d390bb5b113af3;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 ca16bb0544..557c232dd3 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. */