]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: If FETCH didn't send our wanted data, log the tagged FETCH reply text.
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 28 Jan 2016 15:43:01 +0000 (17:43 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 28 Jan 2016 15:43:01 +0000 (17:43 +0200)
src/lib-storage/index/imapc/imapc-mail-fetch.c
src/lib-storage/index/imapc/imapc-mail.c
src/lib-storage/index/imapc/imapc-mail.h

index 5a7bb5dfc4db85187b09f0c8e8d904eeffef4317..39efdcdb20a88f25f64d99abba76926482c25c47 100644 (file)
@@ -21,6 +21,8 @@ static void imapc_mail_set_failure(struct imapc_mail *mail,
        struct imapc_mailbox *mbox =
                (struct imapc_mailbox *)mail->imail.mail.mail.box;
 
+       mail->last_fetch_reply = p_strdup(mail->imail.mail.pool, reply->text_full);
+
        switch (reply->state) {
        case IMAPC_COMMAND_STATE_OK:
                break;
index 4e93b709828eb74c8906cd8cf17fa51e8d2d1a74..93c2223789cb07a5f8402e12549f435023d24dee 100644 (file)
@@ -84,9 +84,10 @@ static int imapc_mail_failed(struct mail *mail, const char *field)
                   */
                fix_broken_mail = imail->fetch_ignore_if_missing;
                mail_storage_set_critical(mail->box->storage,
-                       "imapc: Remote server didn't send %s for UID %u in %s%s",
+                       "imapc: Remote server didn't send %s for UID %u in %s%s (FETCH replied: %s)",
                        field, mail->uid, mail->box->vname,
-                       fix_broken_mail ? " - treating it as empty" : "");
+                       fix_broken_mail ? " - treating it as empty" : "",
+                       imail->last_fetch_reply);
        }
        return fix_broken_mail ? 0 : -1;
 }
index c3de665fb192636ca8a41f26bf7486651d2d8ee3..ddc06ffcbf08b8f298e12ddf497458d72ade177c 100644 (file)
@@ -14,6 +14,7 @@ struct imapc_mail {
        const char *const *fetching_headers;
        unsigned int fetch_count;
        bool fetch_sent;
+       const char *last_fetch_reply;
 
        int fd;
        buffer_t *body;