Mercurial > dovecot > core-2.2
diff src/lib-index/mail-index.c @ 5819:4ea31bf18a56 HEAD
Handle indexid changes better.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Thu, 28 Jun 2007 01:03:18 +0300 |
parents | 98d5e3bd4d13 |
children | e59892590a02 |
line wrap: on
line diff
--- a/src/lib-index/mail-index.c Thu Jun 28 00:04:31 2007 +0300 +++ b/src/lib-index/mail-index.c Thu Jun 28 01:03:18 2007 +0300 @@ -1,6 +1,7 @@ /* Copyright (C) 2003-2004 Timo Sirainen */ #include "lib.h" +#include "ioloop.h" #include "array.h" #include "buffer.h" #include "hash.h" @@ -404,11 +405,20 @@ if ((flags & MAIL_INDEX_OPEN_FLAG_CREATE) == 0) return FALSE; + /* if dovecot.index exists, read it first so that we can get + the correct indexid and log sequence */ + (void)mail_index_try_open(index); + + if (index->indexid == 0) { + /* create a new indexid for us */ + index->indexid = ioloop_time; + } + ret = mail_transaction_log_create(index->log); created = TRUE; } if (ret >= 0) { - ret = created ? 0 : mail_index_try_open(index); + ret = index->map != NULL ? 0 : mail_index_try_open(index); if (ret == 0) { /* doesn't exist / corrupted */ index->map = mail_index_map_alloc(index);