i_free(backend);
}
-static void
+static int
fts_backend_squat_set_box(struct squat_fts_backend *backend,
struct mailbox *box)
{
struct mailbox_status status;
const char *path;
enum squat_index_flags flags = 0;
+ int ret;
if (backend->box == box)
- return;
+ {
+ if (backend->refresh) {
+ ret = squat_trie_refresh(backend->trie);
+ if (ret < 0)
+ return ret;
+ backend->refresh = FALSE;
+ }
+ return 0;
+ }
fts_backend_squat_unset_box(backend);
+ backend->refresh = FALSE;
if (box == NULL)
- return;
+ return 0;
perm = mailbox_get_permissions(box);
storage = mailbox_get_storage(box);
if (backend->full_len != 0)
squat_trie_set_full_len(backend->trie, backend->full_len);
backend->box = box;
+ return squat_trie_open(backend->trie);
}
static int
struct squat_fts_backend *backend =
(struct squat_fts_backend *)_backend;
- fts_backend_squat_set_box(backend, box);
+ int ret = fts_backend_squat_set_box(backend, box);
+ if (ret < 0)
+ return -1;
return squat_trie_get_last_uid(backend->trie, last_uid_r);
}
if (fts_backend_squat_build_deinit(ctx) < 0)
ctx->failed = TRUE;
- fts_backend_squat_set_box(backend, box);
-
- if (box != NULL) {
+ if (fts_backend_squat_set_box(backend, box) < 0)
+ ctx->failed = TRUE;
+ else if (box != NULL) {
if (squat_trie_build_init(backend->trie, &ctx->build_ctx) < 0)
ctx->failed = TRUE;
}
bool first = TRUE;
int ret;
- fts_backend_squat_set_box(backend, box);
- if (backend->refresh) {
- if (squat_trie_refresh(backend->trie) < 0)
- return -1;
- backend->refresh = FALSE;
- }
+ ret = fts_backend_squat_set_box(backend, box);
+ if (ret < 0)
+ return -1;
for (; args != NULL; args = args->next) {
ret = squat_lookup_arg(backend, args, first ? FALSE : and_args,