When FETCH returns an empty mail, the mail is assumed to be expunged.
bool have_header, bool have_body)
{
struct index_mail *imail = &mail->imail;
+ struct imapc_mailbox *mbox =
+ (struct imapc_mailbox *)mail->imail.mail.mail.box;
struct istream *hdr_stream = NULL;
const char *value;
int fd;
} 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);
if (hdr_stream != NULL)
i_stream_unref(&hdr_stream);
{ "modseq", IMAPC_FEATURE_MODSEQ },
{ "delay-login", IMAPC_FEATURE_DELAY_LOGIN },
{ "fetch-bodystructure", IMAPC_FEATURE_FETCH_BODYSTRUCTURE },
+ { "fetch-empty-is-expunged", IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED },
{ NULL, 0 }
};
IMAPC_FEATURE_MODSEQ = 0x400,
IMAPC_FEATURE_DELAY_LOGIN = 0x800,
IMAPC_FEATURE_FETCH_BODYSTRUCTURE = 0x1000,
+ IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED = 0x4000,
};
/* </settings checks> */