dovecot-2.2: maildir: If mailbox_update() doesn't affect dovecot...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Dec 15 13:25:59 EET 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/0e88b2518e0f
changeset: 15472:0e88b2518e0f
user: Timo Sirainen <tss at iki.fi>
date: Sat Dec 15 13:25:34 2012 +0200
description:
maildir: If mailbox_update() doesn't affect dovecot-uidlist file, don't lock it.
diffstat:
src/lib-storage/index/maildir/maildir-storage.c | 25 ++++++++++++++-----------
1 files changed, 14 insertions(+), 11 deletions(-)
diffs (44 lines):
diff -r 88ac919f8afe -r 0e88b2518e0f src/lib-storage/index/maildir/maildir-storage.c
--- a/src/lib-storage/index/maildir/maildir-storage.c Sat Dec 15 13:01:09 2012 +0200
+++ b/src/lib-storage/index/maildir/maildir-storage.c Sat Dec 15 13:25:34 2012 +0200
@@ -420,7 +420,7 @@
{
struct maildir_mailbox *mbox = (struct maildir_mailbox *)box;
struct maildir_uidlist *uidlist;
- int ret;
+ int ret = 0;
if (!box->opened) {
if (mailbox_open(box) < 0)
@@ -428,18 +428,21 @@
}
uidlist = mbox->uidlist;
- if (maildir_uidlist_lock(uidlist) <= 0)
- return -1;
+ if (update->uid_validity != 0 || update->min_next_uid != 0 ||
+ !guid_128_is_empty(update->mailbox_guid)) {
+ if (maildir_uidlist_lock(uidlist) <= 0)
+ return -1;
- if (!guid_128_is_empty(update->mailbox_guid))
- maildir_uidlist_set_mailbox_guid(uidlist, update->mailbox_guid);
- if (update->uid_validity != 0)
- maildir_uidlist_set_uid_validity(uidlist, update->uid_validity);
- if (update->min_next_uid != 0) {
- maildir_uidlist_set_next_uid(uidlist, update->min_next_uid,
- FALSE);
+ if (!guid_128_is_empty(update->mailbox_guid))
+ maildir_uidlist_set_mailbox_guid(uidlist, update->mailbox_guid);
+ if (update->uid_validity != 0)
+ maildir_uidlist_set_uid_validity(uidlist, update->uid_validity);
+ if (update->min_next_uid != 0) {
+ maildir_uidlist_set_next_uid(uidlist, update->min_next_uid,
+ FALSE);
+ }
+ ret = maildir_uidlist_update(uidlist);
}
- ret = maildir_uidlist_update(uidlist);
if (ret == 0)
ret = index_storage_mailbox_update(box, update);
maildir_uidlist_unlock(uidlist);
More information about the dovecot-cvs
mailing list