]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-index: mail_transaction_log_file_lock() - Set last_error.error on readonly indexes
authorMarco Bettini <marco.bettini@open-xchange.com>
Fri, 15 Sep 2023 09:12:24 +0000 (09:12 +0000)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 6 Oct 2023 16:00:06 +0000 (16:00 +0000)
src/lib-index/mail-transaction-log-file.c

index 3a1849d320776014c074909fc6d44dc8e32ffa19..2659aacc99b1be3b01519c13e05e3a679389fe16 100644 (file)
@@ -372,16 +372,17 @@ int mail_transaction_log_file_lock(struct mail_transaction_log_file *file)
                return 0;
        }
 
-       if (index->set.lock_method == FILE_LOCK_METHOD_DOTLOCK)
-               return mail_transaction_log_file_dotlock(file);
-
        if (index->readonly) {
-               mail_index_set_error(index,
+               mail_index_set_error_code(
+                       index, MAIL_INDEX_ERROR_CODE_NO_ACCESS,
                        "Index is read-only, can't write-lock %s",
                        file->filepath);
                return -1;
        }
 
+       if (index->set.lock_method == FILE_LOCK_METHOD_DOTLOCK)
+               return mail_transaction_log_file_dotlock(file);
+
        i_assert(file->file_lock == NULL);
        lock_timeout_secs = I_MIN(MAIL_TRANSACTION_LOG_LOCK_TIMEOUT,
                                  index->set.max_lock_timeout_secs);