From: Timo Sirainen Date: Sun, 19 Jun 2016 22:47:59 +0000 (+0300) Subject: lib-index: Don't break indexes on syscall failures during index refreshing. X-Git-Tag: 2.2.25.rc1~133 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5bb8ef0a2cb42c5cf977dc24963ae95b42a3b89;p=thirdparty%2Fdovecot%2Fcore.git lib-index: Don't break indexes on syscall failures during index refreshing. Especially mmap() failures due to out of memory could have triggered this. We treated the open as successful, which meant that an empty index was opened. --- diff --git a/src/lib-index/mail-index-sync-update.c b/src/lib-index/mail-index-sync-update.c index 05d33bc2bb..76cb8514c7 100644 --- a/src/lib-index/mail-index-sync-update.c +++ b/src/lib-index/mail-index-sync-update.c @@ -955,6 +955,11 @@ int mail_index_sync_map(struct mail_index_map **_map, &reset, &reason); if (ret <= 0) { mail_index_view_close(&view); + if (force && ret < 0) { + /* if we failed because of a syscall error, make sure + we return a failure. */ + return -1; + } if (force && ret == 0) { /* the seq/offset is probably broken */ mail_index_set_error(index, "Index %s: Lost log for "