From: Timo Sirainen Date: Mon, 23 May 2016 15:46:09 +0000 (+0300) Subject: lib-index: Make sure cache compression doesn't clear the file unneededly. X-Git-Tag: 2.2.25.rc1~276 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=26c937b6c6671c99a2b4ce00004189ae4bdd5e87;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Make sure cache compression doesn't clear the file unneededly. This probably never happened with current code, except when the cache file was already broken. mail_cache_compress() unmapped cache when map_with_read==TRUE, but we never mapped it back. This would cause cache copying code to think cache was unusable and not copy anything. --- diff --git a/src/lib-index/mail-cache-compress.c b/src/lib-index/mail-cache-compress.c index cfc33de57c..66bbab4972 100644 --- a/src/lib-index/mail-cache-compress.c +++ b/src/lib-index/mail-cache-compress.c @@ -452,6 +452,9 @@ static int mail_cache_compress_locked(struct mail_cache *cache, return mail_cache_reopen(cache) < 0 ? -1 : 0; } + /* make sure we have mapped it before reading. */ + if (mail_cache_map(cache, 0, 0, &data) < 0) + return -1; /* we want to recreate the cache. write it first to a temporary file */ fd = mail_index_create_tmp_file(cache->index, cache->filepath, &temp_path);