]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-lucene: Cleanup - move code to a separate function
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 25 Apr 2016 17:13:54 +0000 (20:13 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 26 Apr 2016 08:27:45 +0000 (11:27 +0300)
src/plugins/fts-lucene/lucene-wrapper.cc

index 5d634b03b69e405b78a21e752e0f0bf7d6806b37..6182a0cd9dff876bf48aafc6bc68804818f54cf4 100644 (file)
@@ -819,6 +819,29 @@ rescan_next(struct rescan_context *ctx, Document *doc)
        }
 }
 
+static void
+rescan_clear_unseen_mailbox(struct rescan_context *rescan_ctx,
+                           const char *vname,
+                           const struct fts_index_header *hdr)
+{
+       struct mailbox *box;
+       struct mailbox_metadata metadata;
+
+       box = mailbox_alloc(rescan_ctx->index->list, vname,
+                           (enum mailbox_flags)0);
+       if (mailbox_open(box) == 0 &&
+           mailbox_get_metadata(box, MAILBOX_METADATA_GUID,
+                                &metadata) == 0 &&
+           (rescan_ctx == NULL ||
+            hash_table_lookup(rescan_ctx->seen_mailbox_guids,
+                              metadata.guid) == NULL)) {
+               /* this mailbox had no records in lucene index.
+                  make sure its last indexed uid is 0 */
+               (void)fts_index_set_header(box, hdr);
+       }
+       mailbox_free(&box);
+}
+
 static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
                                          struct rescan_context *rescan_ctx)
 {
@@ -828,29 +851,14 @@ static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
                 MAILBOX_LIST_ITER_RETURN_NO_FLAGS);
        struct mailbox_list_iterate_context *iter;
        const struct mailbox_info *info;
-       struct mailbox *box;
-       struct mailbox_metadata metadata;
        struct fts_index_header hdr;
 
        memset(&hdr, 0, sizeof(hdr));
        hdr.settings_checksum = fts_lucene_settings_checksum(&index->set);
 
        iter = mailbox_list_iter_init(index->list, "*", iter_flags);
-       while ((info = mailbox_list_iter_next(iter)) != NULL) {
-               box = mailbox_alloc(index->list, info->vname,
-                                   (enum mailbox_flags)0);
-               if (mailbox_open(box) == 0 &&
-                   mailbox_get_metadata(box, MAILBOX_METADATA_GUID,
-                                        &metadata) == 0 &&
-                   (rescan_ctx == NULL ||
-                    hash_table_lookup(rescan_ctx->seen_mailbox_guids,
-                                      metadata.guid) == NULL)) {
-                       /* this mailbox had no records in lucene index.
-                          make sure its last indexed uid is 0 */
-                       (void)fts_index_set_header(box, &hdr);
-               }
-               mailbox_free(&box);
-       }
+       while ((info = mailbox_list_iter_next(iter)) != NULL)
+               rescan_clear_unseen_mailbox(rescan_ctx, info->vname, &hdr);
        (void)mailbox_list_iter_deinit(&iter);
 }