From: Timo Sirainen Date: Mon, 22 Jan 2018 15:38:32 +0000 (+0200) Subject: lib-index: Fix adding forced cache decisions to existing cache files X-Git-Tag: 2.3.9~2458 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de3018a2744a324ffae457bcdbfc8cebe3f5a880;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Fix adding forced cache decisions to existing cache files If a field already existed in the cache file, the cache decision from the file was always used. This caused force-decisions to be ignored. --- diff --git a/src/lib-index/mail-cache-fields.c b/src/lib-index/mail-cache-fields.c index fcd81c2ab6..326131e880 100644 --- a/src/lib-index/mail-cache-fields.c +++ b/src/lib-index/mail-cache-fields.c @@ -398,7 +398,9 @@ int mail_cache_header_fields_read(struct mail_cache *cache) &orig_key, &orig_value)) { /* already exists, see if decision can be updated */ fidx = POINTER_CAST_TO(orig_value, unsigned int); - if (!cache->fields[fidx].decision_dirty) { + if (!cache->fields[fidx].decision_dirty && + (cache->fields[fidx].field.decision & + MAIL_CACHE_DECISION_FORCED) == 0) { cache->fields[fidx].field.decision = decisions[i]; }