]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Fixed sending single FETCH queries.
authorTimo Sirainen <tss@iki.fi>
Mon, 31 Jan 2011 00:13:51 +0000 (02:13 +0200)
committerTimo Sirainen <tss@iki.fi>
Mon, 31 Jan 2011 00:13:51 +0000 (02:13 +0200)
src/lib-storage/index/imapc/imapc-mail.h
src/lib-storage/index/imapc/imapc-search.c

index 28c8720f32faf8cc7c6929d30f97245c726111e1..e1cb8889caeca9b70e67271a145f854bdc5ef932 100644 (file)
@@ -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;
index 58fdca33566a9cecc30991ee7dd8c640fa2e813d..7864ac9da0dc84fd6b03aca470c4177352c81979 100644 (file)
@@ -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;
 }