}
}
+ if (ret < 0)
+ mail_storage_set_index_error(ibox);
+
if (sc->expunge != NULL) {
for (i = expunges_count*2; i > 0; i -= 2) {
for (seq = expunges[i-1]; seq >= expunges[i-2]; seq--)
sc->new_messages(&ibox->box, new_count, 0, sc_context);
}
- if (ret < 0)
- mail_storage_set_index_error(ibox);
-
mail_index_view_unlock(ibox->view);
return ret;
}
if (fd == -1) {
if (errno == EAGAIN)
return 0;
+ mail_storage_set_critical(uidlist->ibox->box.storage,
+ "file_dotlock_open(%s) failed: %m", path);
return -1;
}
{
i_assert(!UIDLIST_IS_LOCKED(uidlist));
+ hash_destroy(uidlist->files);
if (uidlist->filename_pool != NULL)
pool_unref(uidlist->filename_pool);
- hash_destroy(uidlist->files);
buffer_free(uidlist->record_buf);
i_free(uidlist->fname);
i_free(uidlist);
return -1;
}
+ hash_clear(uidlist->files, FALSE);
if (uidlist->filename_pool != NULL)
- pool_unref(uidlist->filename_pool);
- uidlist->filename_pool =
- pool_alloconly_create("uidlist filename_pool",
- nearest_power(st.st_size -
- st.st_size/8));
+ p_clear(uidlist->filename_pool);
+ else {
+ uidlist->filename_pool =
+ pool_alloconly_create("uidlist filename_pool",
+ nearest_power(st.st_size -
+ st.st_size/8));
+ }
+
buffer_set_used_size(uidlist->record_buf, 0);
uidlist->version = 0;
been added */
ret = maildir_uidlist_try_lock(ctx->uidlist);
if (ret <= 0) {
+ if (ret == 0)
+ return 1; // FIXME: does it work right?
ctx->failed = TRUE;
return -1;
}
for (; dest < size; dest++)
rec[dest].uid = uidlist->next_uid++;
+ hash_destroy(uidlist->files);
+ uidlist->files = ctx->files;
+ ctx->files = NULL;
+
if (uidlist->filename_pool != NULL)
pool_unref(uidlist->filename_pool);
uidlist->filename_pool = ctx->filename_pool;
ctx->filename_pool = NULL;
-
- hash_destroy(uidlist->files);
- uidlist->files = ctx->files;
- ctx->files = NULL;
}
int maildir_uidlist_sync_deinit(struct maildir_uidlist_sync_ctx *ctx)