}
static int
-sdbox_sync_add_file_index(struct index_rebuild_context *ctx,
- struct dbox_file *file, uint32_t uid, bool primary)
+sdbox_sync_file_fix(struct index_rebuild_context *ctx,
+ struct dbox_file *file, bool primary)
{
- uint32_t seq;
bool deleted;
int ret;
it twice. */
return 0;
}
-
- mail_index_append(ctx->trans, uid, &seq);
- T_BEGIN {
- index_rebuild_index_metadata(ctx, seq, uid);
- } T_END;
- return 0;
+ return 1;
}
static int
{
struct sdbox_mailbox *mbox = SDBOX_MAILBOX(ctx->box);
struct dbox_file *file;
- uint32_t uid;
+ uint32_t seq, uid;
int ret;
if (!str_begins(fname, SDBOX_MAIL_FILE_PREFIX, &fname))
file = sdbox_file_init(mbox, uid);
if (!primary)
file->cur_path = file->alt_path;
- ret = sdbox_sync_add_file_index(ctx, file, uid, primary);
+ if ((ret = sdbox_sync_file_fix(ctx, file, primary)) > 0) {
+ mail_index_append(ctx->trans, uid, &seq);
+ T_BEGIN {
+ index_rebuild_index_metadata(ctx, seq, uid);
+ } T_END;
+ ret = 0;
+ }
dbox_file_unref(&file);
return ret;
}