Mercurial > dovecot > core-2.2
changeset 12612:676b6d931624
imapc: Fixed sending single FETCH queries.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 31 Jan 2011 02:13:51 +0200 |
parents | 16a541057e88 |
children | cecc6c28ce0e |
files | src/lib-storage/index/imapc/imapc-mail.h src/lib-storage/index/imapc/imapc-search.c |
diffstat | 2 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-mail.h Mon Jan 31 02:13:06 2011 +0200 +++ b/src/lib-storage/index/imapc/imapc-mail.h Mon Jan 31 02:13:51 2011 +0200 @@ -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;
--- a/src/lib-storage/index/imapc/imapc-search.c Mon Jan 31 02:13:06 2011 +0200 +++ b/src/lib-storage/index/imapc/imapc-search.c Mon Jan 31 02:13:51 2011 +0200 @@ -280,6 +280,7 @@ 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 @@ 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 @@ 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; }