From: Timo Sirainen Date: Mon, 2 Mar 2009 22:54:01 +0000 (-0500) Subject: maildir: When locking uidlist, send OK notifies if it's taking a long time. X-Git-Tag: 1.2.beta2~35 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=075086f56fdcc480b0e87aabde63128e30b49002;p=thirdparty%2Fdovecot%2Fcore.git maildir: When locking uidlist, send OK notifies if it's taking a long time. --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/maildir/maildir-uidlist.c b/src/lib-storage/index/maildir/maildir-uidlist.c index 19b6f88763..7d52320246 100644 --- a/src/lib-storage/index/maildir/maildir-uidlist.c +++ b/src/lib-storage/index/maildir/maildir-uidlist.c @@ -213,6 +213,17 @@ void maildir_uidlist_unlock(struct maildir_uidlist *uidlist) (void)file_dotlock_delete(&uidlist->dotlock); } +static bool dotlock_callback(unsigned int secs_left, bool stale, void *context) +{ + struct index_mailbox *ibox = context; + + index_storage_lock_notify(ibox, stale ? + MAILBOX_LOCK_NOTIFY_MAILBOX_OVERRIDE : + MAILBOX_LOCK_NOTIFY_MAILBOX_ABORT, + secs_left); + return TRUE; +} + struct maildir_uidlist * maildir_uidlist_init_readonly(struct index_mailbox *ibox) { @@ -244,6 +255,8 @@ maildir_uidlist_init_readonly(struct index_mailbox *ibox) MAILDIR_UIDLIST_LOCK_STALE_TIMEOUT + 2; uidlist->dotlock_settings.stale_timeout = MAILDIR_UIDLIST_LOCK_STALE_TIMEOUT; + uidlist->dotlock_settings.callback = dotlock_callback; + uidlist->dotlock_settings.context = ibox; return uidlist; }