From: Timo Sirainen Date: Mon, 31 Jan 2011 00:13:51 +0000 (+0200) Subject: imapc: Fixed sending single FETCH queries. X-Git-Tag: 2.1.alpha1~393 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e3f2f1bee8d849a6e699c38e355948c72fabbfa1;p=thirdparty%2Fdovecot%2Fcore.git imapc: Fixed sending single FETCH queries. --- diff --git a/src/lib-storage/index/imapc/imapc-mail.h b/src/lib-storage/index/imapc/imapc-mail.h index 28c8720f32..e1cb8889ca 100644 --- a/src/lib-storage/index/imapc/imapc-mail.h +++ b/src/lib-storage/index/imapc/imapc-mail.h @@ -6,6 +6,7 @@ struct imapc_mail { struct index_mail imail; unsigned int searching:1; + unsigned int fetch_one:1; }; extern struct mail_vfuncs imapc_mail_vfuncs; diff --git a/src/lib-storage/index/imapc/imapc-search.c b/src/lib-storage/index/imapc/imapc-search.c index 58fdca3356..7864ac9da0 100644 --- a/src/lib-storage/index/imapc/imapc-search.c +++ b/src/lib-storage/index/imapc/imapc-search.c @@ -280,6 +280,7 @@ imapc_fetch_stream(struct index_mail *imail, const char *value, bool body) void imapc_fetch_mail_update(struct mail *mail, const struct imap_arg *args) { + struct imapc_mail *imapmail = (struct imapc_mail *)mail; struct imapc_mailbox *mbox = (struct imapc_mailbox *)mail->box; struct index_mail *imail = (struct index_mail *)mail; const char *key, *value; @@ -309,11 +310,15 @@ void imapc_fetch_mail_update(struct mail *mail, const struct imap_arg *args) imail->data.received_date = t; } } - imapc_client_stop_now(mbox->storage->client); + if (!imapmail->fetch_one) + imapc_client_stop_now(mbox->storage->client); + else + imapc_client_stop(mbox->storage->client); } int imapc_mail_fetch(struct mail *mail, enum mail_fetch_field fields) { + struct imapc_mail *imail = (struct imapc_mail *)mail; struct imapc_mailbox *mbox = (struct imapc_mailbox *)mail->box; struct imapc_simple_context sctx; string_t *str; @@ -331,8 +336,10 @@ int imapc_mail_fetch(struct mail *mail, enum mail_fetch_field fields) imapc_client_mailbox_cmdf(mbox->client_box, imapc_async_stop_callback, mbox->storage, "%1s", str_c(str)); + imail->fetch_one = TRUE; mbox->cur_fetch_mail = mail; imapc_client_run(mbox->storage->client); mbox->cur_fetch_mail = NULL; + imail->fetch_one = FALSE; return sctx.ret; }