From e01ebd51ac369430ec81945e3c5317d6d6244138 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Mon, 30 Oct 2017 11:19:17 +0200 Subject: [PATCH] imapc: Add imapc_features=fetch-empty-is-expunged When FETCH returns an empty mail, the mail is assumed to be expunged. --- src/lib-storage/index/imapc/imapc-mail-fetch.c | 5 ++++- src/lib-storage/index/imapc/imapc-settings.c | 1 + src/lib-storage/index/imapc/imapc-settings.h | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib-storage/index/imapc/imapc-mail-fetch.c b/src/lib-storage/index/imapc/imapc-mail-fetch.c index 7c1abe822a..cfb11fdc42 100644 --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c @@ -601,6 +601,7 @@ imapc_fetch_stream(struct imapc_mail *mail, bool have_header, bool have_body) { struct index_mail *imail = &mail->imail; + struct imapc_mailbox *mbox = IMAPC_MAILBOX(imail->mail.mail.box); struct istream *hdr_stream = NULL; const char *value; int fd; @@ -649,7 +650,9 @@ imapc_fetch_stream(struct imapc_mail *mail, } else { if (!imap_arg_get_nstring(arg, &value)) value = NULL; - if (value == NULL) { + if (value == NULL || + (value[0] == '\0' && + IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED))) { mail_set_expunged(&imail->mail.mail); i_stream_unref(&hdr_stream); return; diff --git a/src/lib-storage/index/imapc/imapc-settings.c b/src/lib-storage/index/imapc/imapc-settings.c index 48f27372f7..676e85d87a 100644 --- a/src/lib-storage/index/imapc/imapc-settings.c +++ b/src/lib-storage/index/imapc/imapc-settings.c @@ -103,6 +103,7 @@ static const struct imapc_feature_list imapc_feature_list[] = { { "delay-login", IMAPC_FEATURE_DELAY_LOGIN }, { "fetch-bodystructure", IMAPC_FEATURE_FETCH_BODYSTRUCTURE }, { "send-id", IMAPC_FEATURE_SEND_ID }, + { "fetch-empty-is-expunged", IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED }, { NULL, 0 } }; diff --git a/src/lib-storage/index/imapc/imapc-settings.h b/src/lib-storage/index/imapc/imapc-settings.h index 9850f78f85..038bc4e3d1 100644 --- a/src/lib-storage/index/imapc/imapc-settings.h +++ b/src/lib-storage/index/imapc/imapc-settings.h @@ -19,6 +19,7 @@ enum imapc_features { IMAPC_FEATURE_DELAY_LOGIN = 0x800, IMAPC_FEATURE_FETCH_BODYSTRUCTURE = 0x1000, IMAPC_FEATURE_SEND_ID = 0x2000, + IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED = 0x4000, }; /* */ -- 2.47.3