]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-lucene: Rescan skipped namespace roots.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 25 Apr 2016 17:14:19 +0000 (20:14 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 25 Apr 2016 19:26:10 +0000 (22:26 +0300)
src/plugins/fts-lucene/lucene-wrapper.cc

index 6182a0cd9dff876bf48aafc6bc68804818f54cf4..718502290ef339e30cedae76b9d396228d662c52 100644 (file)
@@ -852,6 +852,8 @@ static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
        struct mailbox_list_iterate_context *iter;
        const struct mailbox_info *info;
        struct fts_index_header hdr;
+       struct mail_namespace *ns = index->list->ns;
+       const char *vname;
 
        memset(&hdr, 0, sizeof(hdr));
        hdr.settings_checksum = fts_lucene_settings_checksum(&index->set);
@@ -860,6 +862,14 @@ static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
        while ((info = mailbox_list_iter_next(iter)) != NULL)
                rescan_clear_unseen_mailbox(rescan_ctx, info->vname, &hdr);
        (void)mailbox_list_iter_deinit(&iter);
+
+       if (ns->prefix_len > 0 &&
+           ns->prefix[ns->prefix_len-1] == mail_namespace_get_sep(ns)) {
+               /* namespace prefix itself isn't returned by the listing */
+               vname = t_strndup(index->list->ns->prefix,
+                                 index->list->ns->prefix_len-1);
+               rescan_clear_unseen_mailbox(rescan_ctx, vname, &hdr);
+       }
 }
 
 int lucene_index_rescan(struct lucene_index *index)