i_debug("brain %c: import mail uid %u guid %s",
brain->master_brain ? 'M' : 'S', mail->uid, mail->guid);
}
- dsync_mailbox_import_mail(brain->box_importer, mail);
+ if (dsync_mailbox_import_mail(brain->box_importer, mail) < 0)
+ brain->failed = TRUE;
if (mail->input != NULL)
i_stream_unref(&mail->input);
return TRUE;
return ret;
}
-void dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
- const struct dsync_mail *mail)
+int dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
+ const struct dsync_mail *mail)
{
struct importer_new_mail *all_newmails;
i_assert(importer->new_uids_assigned);
if (importer->failed)
- return;
+ return -1;
imp_debug(importer, "Import mail body for GUID=%s UID=%u",
mail->guid, mail->uid);
imp_debug(importer, "Skip unwanted mail body for "
"GUID=%s UID=%u", mail->guid, mail->uid);
}
- return;
+ return 0;
}
if (*mail->guid != '\0')
hash_table_remove(importer->import_guids, mail->guid);
importer->import_pos++;
if (!dsync_mailbox_save_newmails(importer, mail, all_newmails, TRUE))
i_unreached();
+ return importer->failed ? -1 : 0;
}
static int
int dsync_mailbox_import_changes_finish(struct dsync_mailbox_importer *importer);
const struct dsync_mail_request *
dsync_mailbox_import_next_request(struct dsync_mailbox_importer *importer);
-void dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
- const struct dsync_mail *mail);
+int dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
+ const struct dsync_mail *mail);
int dsync_mailbox_import_deinit(struct dsync_mailbox_importer **importer,
bool success,
uint32_t *last_common_uid_r,