Skip to content

Commit

Permalink
dsync: If mailbox importing fails, stop immediately without waiting f…
Browse files Browse the repository at this point in the history
…or exporter to finish.
  • Loading branch information
sirainen committed Feb 1, 2016
1 parent 71caf49 commit 7ae6552
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/doveadm/dsync/dsync-brain-mails.c
Expand Up @@ -278,7 +278,8 @@ static bool dsync_brain_recv_mail(struct dsync_brain *brain)
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;
Expand Down
9 changes: 5 additions & 4 deletions src/doveadm/dsync/dsync-mailbox-import.c
Expand Up @@ -2411,16 +2411,16 @@ static bool dsync_mailbox_save_newmails(struct dsync_mailbox_importer *importer,
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(mail->input == NULL || mail->input->seekable);
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);
Expand All @@ -2438,7 +2438,7 @@ void dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
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);
Expand All @@ -2449,6 +2449,7 @@ void dsync_mailbox_import_mail(struct dsync_mailbox_importer *importer,
importer->import_pos++;
if (!dsync_mailbox_save_newmails(importer, mail, all_newmails, TRUE))
i_unreached();
return importer->failed ? -1 : 0;
}

static int
Expand Down
4 changes: 2 additions & 2 deletions src/doveadm/dsync/dsync-mailbox-import.h
Expand Up @@ -40,8 +40,8 @@ int dsync_mailbox_import_change(struct dsync_mailbox_importer *importer,
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,
Expand Down

0 comments on commit 7ae6552

Please sign in to comment.