dovecot-2.2: imapc: If FETCH commands fail, have imapc_mail_fetc...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Aug 25 13:51:10 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/a98267f8a6e6
changeset: 19003:a98267f8a6e6
user: Timo Sirainen <tss at iki.fi>
date: Tue Aug 25 16:50:17 2015 +0300
description:
imapc: If FETCH commands fail, have imapc_mail_fetch() always return failure.
Earlier it may have returned success and imapc would later complain about a
missing FETCH field.
diffstat:
src/lib-storage/index/imapc/imapc-mail-fetch.c | 9 ++++++++-
src/lib-storage/index/imapc/imapc-mail.h | 1 +
2 files changed, 9 insertions(+), 1 deletions(-)
diffs (45 lines):
diff -r f3e6256d3762 -r a98267f8a6e6 src/lib-storage/index/imapc/imapc-mail-fetch.c
--- a/src/lib-storage/index/imapc/imapc-mail-fetch.c Tue Aug 25 01:07:04 2015 +0300
+++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c Tue Aug 25 16:50:17 2015 +0300
@@ -28,6 +28,9 @@
struct imapc_mail *mail = *mailp;
i_assert(mail->fetch_count > 0);
+ if (reply->state != IMAPC_COMMAND_STATE_OK &&
+ reply->state != IMAPC_COMMAND_STATE_NO)
+ mail->fetch_failed = TRUE;
if (--mail->fetch_count == 0)
mail->fetching_fields = 0;
pool_unref(&mail->imail.mail.pool);
@@ -252,6 +255,7 @@
mail->fetching_fields |= fields;
mail->fetch_count++;
mail->fetch_sent = FALSE;
+ mail->fetch_failed = FALSE;
imapc_mail_delayed_send_or_merge(mail, str);
return 1;
@@ -394,8 +398,11 @@
imapc_mail_fetch_flush(mbox);
while (imail->fetch_count > 0 &&
(!imapc_mail_have_fields(imail, fields) ||
- !imail->header_list_fetched))
+ !imail->header_list_fetched)) {
imapc_mailbox_run_nofetch(mbox);
+ }
+ if (imail->fetch_failed)
+ return -1;
return 0;
}
diff -r f3e6256d3762 -r a98267f8a6e6 src/lib-storage/index/imapc/imapc-mail.h
--- a/src/lib-storage/index/imapc/imapc-mail.h Tue Aug 25 01:07:04 2015 +0300
+++ b/src/lib-storage/index/imapc/imapc-mail.h Tue Aug 25 16:50:17 2015 +0300
@@ -20,6 +20,7 @@
bool header_fetched;
bool body_fetched;
bool header_list_fetched;
+ bool fetch_failed;
};
extern struct mail_vfuncs imapc_mail_vfuncs;
More information about the dovecot-cvs
mailing list