/* we'll continue waiting until we've got all the fields we wanted,
or until all FETCH replies have been received (i.e. some FETCHes
failed) */
+ imapc_mail_fetch_flush(mbox);
while (imail->fetch_count > 0 &&
(!imapc_mail_have_fields(imail, fields) ||
!imail->header_list_fetched))
- imapc_mailbox_run(mbox);
+ imapc_mailbox_run_nofetch(mbox);
return 0;
}
struct imapc_mailbox *mbox = (struct imapc_mailbox *)_mail->box;
struct imapc_mail_cache *cache = &mbox->prev_mail_cache;
- while (mail->fetch_count > 0)
- imapc_mailbox_run(mbox);
+ if (mail->fetch_count > 0) {
+ imapc_mail_fetch_flush(mbox);
+ while (mail->fetch_count > 0)
+ imapc_mailbox_run_nofetch(mbox);
+ }
index_mail_close(_mail);
void imapc_mailbox_run(struct imapc_mailbox *mbox)
{
imapc_mail_fetch_flush(mbox);
+ imapc_mailbox_run_nofetch(mbox);
+}
+
+void imapc_mailbox_run_nofetch(struct imapc_mailbox *mbox)
+{
do {
imapc_client_run(mbox->storage->client->client);
} while (mbox->storage->reopen_count > 0);
void imapc_transaction_save_rollback(struct mail_save_context *ctx);
void imapc_mailbox_run(struct imapc_mailbox *mbox);
+void imapc_mailbox_run_nofetch(struct imapc_mailbox *mbox);
void imapc_mail_cache_free(struct imapc_mail_cache *cache);
int imapc_mailbox_select(struct imapc_mailbox *mbox);