]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Add imapc_features=fetch-empty-is-expunged
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 30 Oct 2017 09:19:17 +0000 (11:19 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Wed, 3 Jan 2018 15:12:44 +0000 (17:12 +0200)
When FETCH returns an empty mail, the mail is assumed to be expunged.

src/lib-storage/index/imapc/imapc-mail-fetch.c
src/lib-storage/index/imapc/imapc-settings.c
src/lib-storage/index/imapc/imapc-settings.h

index 0fa69f52e4647fc5cba08c66379bf0e901de698c..5dda047bfe11ecd92e23c5d7349d829438d7df72 100644 (file)
@@ -609,6 +609,8 @@ imapc_fetch_stream(struct imapc_mail *mail,
                   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;
@@ -663,7 +665,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);
                        if (hdr_stream != NULL)
                                i_stream_unref(&hdr_stream);
index 47f12e375258664db84c2419bdb88e3c97962a27..89d43591db5a00ab49aa951ff439ecfaf3218eb2 100644 (file)
@@ -102,6 +102,7 @@ static const struct imapc_feature_list imapc_feature_list[] = {
        { "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 }
 };
 
index 8210bbe072dd8eb4d86cc7dcd0cbaa031da6ccb4..bdf331d985019a679a8d3c7e01219d981ebc982f 100644 (file)
@@ -18,6 +18,7 @@ enum imapc_features {
        IMAPC_FEATURE_MODSEQ                    = 0x400,
        IMAPC_FEATURE_DELAY_LOGIN               = 0x800,
        IMAPC_FEATURE_FETCH_BODYSTRUCTURE       = 0x1000,
+       IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED   = 0x4000,
 };
 /* </settings checks> */