Lines Matching refs:sync_ctx

206 sync_expunge_nonexistent(struct mailbox_list_index_sync_context *sync_ctx,
213 sync_expunge_nonexistent(sync_ctx, node->children);
216 if (mail_index_lookup_seq(sync_ctx->view, node->uid,
218 mail_index_expunge(sync_ctx->trans, seq);
219 mailbox_list_index_node_unlink(sync_ctx->ilist, node);
229 struct mailbox_list_index_sync_context *sync_ctx;
263 sync_ctx = i_new(struct mailbox_list_index_sync_context, 1);
264 sync_ctx->list = list;
265 sync_ctx->ilist = ilist;
266 sync_ctx->sep[0] = mailbox_list_get_hierarchy_sep(list);
267 sync_ctx->orig_highest_name_id = ilist->highest_name_id;
268 sync_ctx->index_sync_ctx = index_sync_ctx;
269 sync_ctx->trans = trans;
272 sync_ctx->next_uid = hdr->next_uid;
282 sync_ctx->view = mail_index_transaction_open_updated_view(trans);
283 ilist->sync_ctx = sync_ctx;
286 *sync_ctx_r = sync_ctx;
291 mailbox_list_index_sync_list(struct mailbox_list_index_sync_context *sync_ctx)
302 mailbox_list_index_node_clear_exists(sync_ctx->ilist->mailbox_tree);
308 iter = sync_ctx->ilist->module_ctx.super.
309 iter_init(sync_ctx->list, patterns,
313 sync_ctx->syncing_list = TRUE;
314 while ((info = sync_ctx->ilist->module_ctx.super.iter_next(iter)) != NULL) T_BEGIN {
330 seq = mailbox_list_index_sync_name(sync_ctx, name,
333 mail_index_update_flags(sync_ctx->trans, seq,
338 sync_ctx->syncing_list = FALSE;
340 if (sync_ctx->ilist->module_ctx.super.iter_deinit(iter) < 0)
344 sync_expunge_nonexistent(sync_ctx, sync_ctx->ilist->mailbox_tree);
349 mailbox_list_index_sync_update_hdr(struct mailbox_list_index_sync_context *sync_ctx)
351 if (sync_ctx->orig_highest_name_id != sync_ctx->ilist->highest_name_id ||
352 sync_ctx->ilist->corrupted_names_or_parents) {
355 mailbox_list_index_sync_names(sync_ctx);
357 sync_ctx->ilist->corrupted_names_or_parents = FALSE;
358 } else if (mailbox_list_index_need_refresh(sync_ctx->ilist,
359 sync_ctx->view)) {
364 mail_index_update_header_ext(sync_ctx->trans, sync_ctx->ilist->ext_id,
371 mailbox_list_index_sync_update_corrupted_node(struct mailbox_list_index_sync_context *sync_ctx,
379 if (!mail_index_lookup_seq(sync_ctx->view, node->uid, &seq))
383 mail_index_lookup_ext(sync_ctx->view, seq,
384 sync_ctx->ilist->ext_id,
391 mail_index_update_ext(sync_ctx->trans, seq,
392 sync_ctx->ilist->ext_id, &irec, NULL);
396 mail_index_update_flags(sync_ctx->trans, seq, MODIFY_REPLACE,
401 mail_index_update_flags(sync_ctx->trans, seq, MODIFY_ADD,
407 mailbox_list_index_sync_update_corrupted_nodes(struct mailbox_list_index_sync_context *sync_ctx,
411 mailbox_list_index_sync_update_corrupted_node(sync_ctx, node);
412 mailbox_list_index_sync_update_corrupted_nodes(sync_ctx, node->children);
417 mailbox_list_index_sync_update_corrupted(struct mailbox_list_index_sync_context *sync_ctx)
419 if (!sync_ctx->ilist->corrupted_names_or_parents)
422 mailbox_list_index_sync_update_corrupted_nodes(sync_ctx,
423 sync_ctx->ilist->mailbox_tree);
429 struct mailbox_list_index_sync_context *sync_ctx = *_sync_ctx;
435 mailbox_list_index_sync_update_corrupted(sync_ctx);
436 mailbox_list_index_sync_update_hdr(sync_ctx);
438 mail_index_view_close(&sync_ctx->view);
442 while (mail_index_sync_next(sync_ctx->index_sync_ctx, &sync_rec)) ;
443 if ((ret = mail_index_sync_commit(&sync_ctx->index_sync_ctx)) < 0)
444 mailbox_list_index_set_index_error(sync_ctx->list);
446 mail_index_sync_rollback(&sync_ctx->index_sync_ctx);
449 sync_ctx->ilist->syncing = FALSE;
450 sync_ctx->ilist->sync_ctx = NULL;
451 i_free(sync_ctx);
457 struct mailbox_list_index_sync_context *sync_ctx;
460 if (mailbox_list_index_sync_begin(list, &sync_ctx) < 0)
463 if (!sync_ctx->ilist->has_backing_store) {
466 sync_ctx->ilist->call_corruption_callback ||
467 sync_ctx->ilist->corrupted_names_or_parents ||
468 sync_ctx->ilist->highest_name_id == 0 ||
469 !sync_ctx->list->mail_set->mailbox_list_index_very_dirty_syncs) {
471 ret = mailbox_list_index_sync_list(sync_ctx);
473 return mailbox_list_index_sync_end(&sync_ctx, ret == 0);
476 int mailbox_list_index_sync_delete(struct mailbox_list_index_sync_context *sync_ctx,
485 node = mailbox_list_index_lookup(sync_ctx->list, name);
487 mailbox_list_set_error(sync_ctx->list, MAIL_ERROR_NOTFOUND,
491 if (!mail_index_lookup_seq(sync_ctx->view, node->uid, &seq))
496 mail_index_update_flags(sync_ctx->trans, seq, MODIFY_REPLACE,
499 mail_index_lookup_ext(sync_ctx->view, seq,
500 sync_ctx->ilist->ext_id,
506 mail_index_update_ext(sync_ctx->trans, seq,
507 sync_ctx->ilist->ext_id, &rec, NULL);
516 mail_index_expunge(sync_ctx->trans, seq);
517 mailbox_list_index_node_unlink(sync_ctx->ilist, node);