]> 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)
committerTimo Sirainen <tss@dovecot.fi>
Mon, 30 Oct 2017 09:57:51 +0000 (11:57 +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 7c1abe822a7b5fd938ccf46d5102cdfe5a1d40ec..cfb11fdc421353e4d2d02ad65fb1569d81c574ce 100644 (file)
@@ -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;
index 48f27372f730ccf87451a6f80af51abc0ca6888f..676e85d87aa36282f1e0db8a87db0afab5c449a4 100644 (file)
@@ -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 }
 };
 
index 9850f78f85971430636762a25b5e8d5f502795c4..038bc4e3d1c0e5ce3f95b0dc8e7a6abeb44d37ab 100644 (file)
@@ -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,
 };
 /* </settings checks> */