Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8273:40df4d4cced0 HEAD
Cache file was never updated if the file existed but index didn't have cache extension.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 14 Oct 2008 14:52:44 +0300 |
parents | 434a8a0edc0a |
children | 242e6d47f790 |
files | src/lib-index/mail-cache-transaction.c |
diffstat | 1 files changed, 16 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-cache-transaction.c Tue Oct 14 00:58:13 2008 +0300 +++ b/src/lib-index/mail-cache-transaction.c Tue Oct 14 14:52:44 2008 +0300 @@ -159,19 +159,23 @@ return; if (!mail_index_map_get_ext_idx(cache->index->map, - cache->ext_id, &idx)) - return; - - ext = array_idx(&cache->index->map->extensions, idx); - if (ext->reset_id == cache->hdr->file_seq || i == 2) - break; + cache->ext_id, &idx)) { + /* index doesn't have a cache extension, but the cache + file exists (corrupted indexes fixed?). fix it. */ + if (i == 2) + break; + } else { + ext = array_idx(&cache->index->map->extensions, idx); + if (ext->reset_id == cache->hdr->file_seq || i == 2) + break; - /* index offsets don't match the cache file */ - if (ext->reset_id > cache->hdr->file_seq) { - /* the cache file appears to be too old. - reopening should help. */ - if (mail_cache_reopen(cache) != 0) - break; + /* index offsets don't match the cache file */ + if (ext->reset_id > cache->hdr->file_seq) { + /* the cache file appears to be too old. + reopening should help. */ + if (mail_cache_reopen(cache) != 0) + break; + } } /* cache file sequence might be broken. it's also possible