From: Timo Sirainen Date: Mon, 18 Oct 2010 15:14:08 +0000 (+0100) Subject: lib-index: More undoing of locking code changes. X-Git-Tag: 2.0.6~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=47c7c7aaecfebfe765931d2f0fb41f984e42084f;p=thirdparty%2Fdovecot%2Fcore.git lib-index: More undoing of locking code changes. --- 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;