{
int fd;
- i_assert(!cache->anon_mmap);
+ if (cache->anon_mmap) {
+ /* cache was set corrupted, we'll have to quit */
+ return FALSE;
+ }
fd = open(cache->filepath, O_RDWR);
if (fd == -1)
if ((ret = mail_index_read_header(index, &hdr)) < 0)
return FALSE;
+ index->indexid = hdr.indexid;
if (ret == 0 || hdr.major_version != MAIL_INDEX_MAJOR_VERSION ||
- (hdr.flags & MAIL_INDEX_HDR_FLAG_REBUILD) != 0) {
+ (hdr.flags & MAIL_INDEX_HDR_FLAG_REBUILD) != 0 ||
+ !mail_index_mmap_update(index)) {
if ((flags & MAIL_INDEX_OPEN_FLAG_CREATE) == 0)
return FALSE;
return FALSE;
}
- index->indexid = hdr.indexid;
-
- if (!mail_index_mmap_update(index))
- return FALSE;
-
if (index->lock_type == MAIL_LOCK_SHARED) {
/* we don't want to keep the shared lock while opening
indexes. opening should work unlocked and some