From 47c7c7aaecfebfe765931d2f0fb41f984e42084f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 18 Oct 2010 16:14:08 +0100 Subject: [PATCH] lib-index: More undoing of locking code changes. --- src/lib-index/mail-index-lock.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib-index/mail-index-lock.c b/src/lib-index/mail-index-lock.c index c964a6b3a2..8752479144 100644 --- a/src/lib-index/mail-index-lock.c +++ b/src/lib-index/mail-index-lock.c @@ -74,9 +74,15 @@ static int mail_index_lock(struct mail_index *index, int lock_type, return 1; } - i_assert(index->file_lock == NULL); - ret = mail_index_lock_fd(index, index->filepath, index->fd, - lock_type, timeout_secs, &index->file_lock); + if (index->file_lock == NULL) { + i_assert(index->lock_type == F_UNLCK); + ret = mail_index_lock_fd(index, index->filepath, index->fd, + lock_type, timeout_secs, + &index->file_lock); + } else { + i_assert(index->lock_type == F_RDLCK && lock_type == F_WRLCK); + ret = file_lock_try_update(index->file_lock, lock_type); + } if (ret <= 0) return ret; -- 2.47.3