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;
 }