changeset 13102:ed7f134a9429

fts: Make sure fts_index_get_last_uid() gets the latest value from index.
author Timo Sirainen <tss@iki.fi>
date Fri, 22 Jul 2011 13:51:57 +0300
parents 7b9978eb6f91
children 88f1c971f3a9
files src/plugins/fts/fts-api.c
diffstat 1 files changed, 11 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/fts/fts-api.c	Fri Jul 22 13:21:59 2011 +0300
+++ b/src/plugins/fts/fts-api.c	Fri Jul 22 13:51:57 2011 +0300
@@ -310,20 +310,26 @@
 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)