]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts: Make sure fts_index_get_last_uid() gets the latest value from index.
authorTimo Sirainen <tss@iki.fi>
Fri, 22 Jul 2011 10:51:57 +0000 (13:51 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 22 Jul 2011 10:51:57 +0000 (13:51 +0300)
src/plugins/fts/fts-api.c

index 98afb1b8335829eb3c9749ec881124c20323f7d6..8e1bf687b1eb68757b276ae24fdadc913df98042 100644 (file)
@@ -310,20 +310,26 @@ static bool
 fts_index_get_header(struct mailbox *box, struct fts_index_header *hdr_r,
                     uint32_t *ext_id_r)
 {
+       struct mail_index_view *view;
        const void *data;
        size_t data_size;
+       bool ret;
 
+       (void)mail_index_refresh(box->index);
+       view = mail_index_view_open(box->index);
        *ext_id_r = mail_index_ext_register(box->index, "fts",
                                            sizeof(struct fts_index_header),
                                            0, 0);
-       mail_index_get_header_ext(box->view, *ext_id_r, &data, &data_size);
+       mail_index_get_header_ext(view, *ext_id_r, &data, &data_size);
        if (data_size < sizeof(*hdr_r)) {
                memset(hdr_r, 0, sizeof(*hdr_r));
-               return FALSE;
+               ret = FALSE;
+       } else {
+               memcpy(hdr_r, data, data_size);
+               ret = TRUE;
        }
-
-       memcpy(hdr_r, data, data_size);
-       return TRUE;
+       mail_index_view_close(&view);
+       return ret;
 }
 
 bool fts_index_get_last_uid(struct mailbox *box, uint32_t *last_uid_r)