]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Fix optimizing searches in virtual mailboxes without up-to-date indexes
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 2 May 2022 21:27:47 +0000 (00:27 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Tue, 3 May 2022 16:40:04 +0000 (16:40 +0000)
This could have caused header searches in virtual mailboxes to not return
all results when fts_enforced!=yes

Broken by 9705b81fb51b5bdeaba12932a390ced2cc9dcad7

src/plugins/fts/fts-storage.c

index 04f2aec738c1ebd38d4e3df16a429afb4995787d..101d52a21dd53002abd2d88b226cef2cd158c662 100644 (file)
@@ -825,8 +825,11 @@ static void fts_mailbox_virtual_match_mail(struct mail_search_context *ctx,
                hash_table_lookup(fctx->last_indexed_virtual_uids, box_name);
        if (uid_value == NULL) {
                /* This backend's last indexed uid is not yet inserted to the table */
-               if (mailbox_open(backend_mail->box) < 0 ||
-                   fts_backend_get_last_uid(fctx->backend, backend_mail->box,
+               struct fts_mailbox_list *flist =
+                       FTS_LIST_CONTEXT(backend_mail->box->list);
+               if (flist == NULL || flist->failed ||
+                   mailbox_open(backend_mail->box) < 0 ||
+                   fts_backend_get_last_uid(flist->backend, backend_mail->box,
                                             &be_last_uid) < 0) {
                        be_last_uid = 0;
                } else {