From 14fb3a2f6af1d75aeec6deb766026b4ea6a4db53 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 28 Jan 2016 17:43:01 +0200 Subject: [PATCH] imapc: If FETCH didn't send our wanted data, log the tagged FETCH reply text. --- src/lib-storage/index/imapc/imapc-mail-fetch.c | 2 ++ src/lib-storage/index/imapc/imapc-mail.c | 5 +++-- src/lib-storage/index/imapc/imapc-mail.h | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib-storage/index/imapc/imapc-mail-fetch.c b/src/lib-storage/index/imapc/imapc-mail-fetch.c index 5a7bb5dfc4..39efdcdb20 100644 --- a/src/lib-storage/index/imapc/imapc-mail-fetch.c +++ b/src/lib-storage/index/imapc/imapc-mail-fetch.c @@ -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; diff --git a/src/lib-storage/index/imapc/imapc-mail.c b/src/lib-storage/index/imapc/imapc-mail.c index 4e93b70982..93c2223789 100644 --- a/src/lib-storage/index/imapc/imapc-mail.c +++ b/src/lib-storage/index/imapc/imapc-mail.c @@ -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; } diff --git a/src/lib-storage/index/imapc/imapc-mail.h b/src/lib-storage/index/imapc/imapc-mail.h index c3de665fb1..ddc06ffcbf 100644 --- a/src/lib-storage/index/imapc/imapc-mail.h +++ b/src/lib-storage/index/imapc/imapc-mail.h @@ -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;