changeset 8796:94c815002d84 HEAD

maildir: When locking uidlist, send OK notifies if it's taking a long time.
author Timo Sirainen <tss@iki.fi>
date Mon, 02 Mar 2009 17:54:01 -0500
parents ebfcfa35b4f4
children 3e3aba4a3acd
files src/lib-storage/index/maildir/maildir-uidlist.c
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-uidlist.c	Mon Mar 02 11:32:46 2009 -0500
+++ b/src/lib-storage/index/maildir/maildir-uidlist.c	Mon Mar 02 17:54:01 2009 -0500
@@ -213,6 +213,17 @@
 	(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_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;
 }