From: Timo Sirainen Date: Mon, 8 Mar 2010 17:53:28 +0000 (+0200) Subject: lib-index: When index is reset, make sure old dovecot.index gets deleted. X-Git-Tag: 2.0.beta4~102 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b426f49d36187895debdda67fff09f97941881c;p=thirdparty%2Fdovecot%2Fcore.git lib-index: When index is reset, make sure old dovecot.index gets deleted. --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-index-transaction.c b/src/lib-index/mail-index-transaction.c index 38f2d58383..95b0760b5f 100644 --- a/src/lib-index/mail-index-transaction.c +++ b/src/lib-index/mail-index-transaction.c @@ -146,6 +146,13 @@ mail_index_transaction_commit_real(struct mail_index_transaction *t, mail_transaction_log_get_head(log, &log_seq2, &log_offset2); i_assert(log_seq1 == log_seq2); + if (t->reset) { + /* get rid of the old index. it might just confuse readers, + especially if it's broken. */ + if (unlink(log->index->filepath) < 0 && errno != ENOENT) + i_error("unlink(%s) failed: %m", log->index->filepath); + } + *commit_size_r = log_offset2 - log_offset1; if ((t->flags & MAIL_INDEX_TRANSACTION_FLAG_HIDE) != 0 &&