dovecot-2.2: lib-storage: Fixed assert-crash when saving mails i...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Feb 22 10:09:25 EET 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/0158c7b2c5db
changeset: 15884:0158c7b2c5db
user: Timo Sirainen <tss at iki.fi>
date: Fri Feb 22 10:09:19 2013 +0200
description:
lib-storage: Fixed assert-crash when saving mails if UIDs weren't assigned.
diffstat:
src/lib-storage/mail-storage.c | 5 ++++-
src/lib-storage/mail-storage.h | 4 +++-
2 files changed, 7 insertions(+), 2 deletions(-)
diffs (36 lines):
diff -r 3fb9a8bc35aa -r 0158c7b2c5db src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c Thu Feb 21 19:30:38 2013 +0200
+++ b/src/lib-storage/mail-storage.c Fri Feb 22 10:09:19 2013 +0200
@@ -1745,6 +1745,7 @@
{
struct mailbox_transaction_context *t = *_t;
unsigned int save_count = t->save_count;
+ bool assign_uids = (t->flags & MAILBOX_TRANSACTION_FLAG_ASSIGN_UIDS) != 0;
int ret;
t->box->transaction_count--;
@@ -1754,7 +1755,9 @@
T_BEGIN {
ret = t->box->v.transaction_commit(t, changes_r);
} T_END;
- i_assert(ret < 0 || seq_range_count(&changes_r->saved_uids) == save_count);
+ i_assert(ret < 0 ||
+ seq_range_count(&changes_r->saved_uids) == save_count ||
+ (array_count(&changes_r->saved_uids) == 0 && !assign_uids));
if (ret < 0 && changes_r->pool != NULL)
pool_unref(&changes_r->pool);
return ret;
diff -r 3fb9a8bc35aa -r 0158c7b2c5db src/lib-storage/mail-storage.h
--- a/src/lib-storage/mail-storage.h Thu Feb 21 19:30:38 2013 +0200
+++ b/src/lib-storage/mail-storage.h Fri Feb 22 10:09:19 2013 +0200
@@ -299,7 +299,9 @@
/* UIDVALIDITY for assigned UIDs. */
uint32_t uid_validity;
- /* UIDs assigned to saved messages. Not necessarily ascending. */
+ /* UIDs assigned to saved messages. Not necessarily ascending.
+ If UID assignment wasn't required (e.g. LDA), this array may also be
+ empty. Otherwise all of the saved mails got an UID. */
ARRAY_TYPE(seq_range) saved_uids;
/* number of modseq changes that couldn't be changed as requested */
More information about the dovecot-cvs
mailing list