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.3.0.rc1~3483 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d697aa99bbcd1b0356afbc2b0ab87c88fc7d725c;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 3bbd99822d..394062f772 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 "