diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index 54fcca1ccb..4abdb9a132 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -84,6 +84,8 @@ void doveadm_mail_failed_error(struct doveadm_mail_cmd_context *ctx, case MAIL_ERROR_LIMIT: exit_code = DOVEADM_EX_NOTPOSSIBLE; break; + case MAIL_ERROR_LOOKUP_ABORTED: + break; } /* tempfail overrides all other exit codes, otherwise use whatever error happened first */ diff --git a/src/imap/imap-commands-util.c b/src/imap/imap-commands-util.c index d724077231..39dfb5ae70 100644 --- a/src/imap/imap-commands-util.c +++ b/src/imap/imap-commands-util.c @@ -141,6 +141,7 @@ imap_get_error_string(struct client_command_context *cmd, case MAIL_ERROR_NONE: break; case MAIL_ERROR_TEMP: + case MAIL_ERROR_LOOKUP_ABORTED: /* BUG: shouldn't be visible here */ resp_code = IMAP_RESP_CODE_SERVERBUG; break; case MAIL_ERROR_NOTPOSSIBLE: diff --git a/src/lib-storage/index/index-mailbox-size.c b/src/lib-storage/index/index-mailbox-size.c index 09e9181ae7..c365954b65 100644 --- a/src/lib-storage/index/index-mailbox-size.c +++ b/src/lib-storage/index/index-mailbox-size.c @@ -331,7 +331,7 @@ index_mailbox_vsize_hdr_add_missing(struct mailbox_vsize_update *update, } ret = mail_get_virtual_size(mail, &vsize); if (ret < 0 && - mailbox_get_last_mail_error(update->box) == MAIL_ERROR_NOTPOSSIBLE) { + mailbox_get_last_mail_error(update->box) == MAIL_ERROR_LOOKUP_ABORTED) { /* abort and finish on background */ i_assert(mails_left == 0); diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index cfb52170cc..8eab25e04b 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -82,8 +82,8 @@ static void search_cur_mail_failed(struct index_search_context *ctx) case MAIL_ERROR_EXPUNGED: ctx->mail_ctx.seen_lost_data = TRUE; break; - case MAIL_ERROR_NOTPOSSIBLE: - /* lookup_abort hit */ + case MAIL_ERROR_LOOKUP_ABORTED: + /* expected failure */ break; default: search_set_failed(ctx); diff --git a/src/lib-storage/index/index-sort.c b/src/lib-storage/index/index-sort.c index 2f0df42887..a7cae3b216 100644 --- a/src/lib-storage/index/index-sort.c +++ b/src/lib-storage/index/index-sort.c @@ -43,7 +43,7 @@ index_sort_program_set_mail_failed(struct mail_search_sort_program *program, switch (mailbox_get_last_mail_error(mail->box)) { case MAIL_ERROR_EXPUNGED: break; - case MAIL_ERROR_NOTPOSSIBLE: + case MAIL_ERROR_LOOKUP_ABORTED: /* just change the error message */ mail_storage_set_error(program->t->box->storage, MAIL_ERROR_LIMIT, "Requested sort would have taken too long."); diff --git a/src/lib-storage/mail-error.h b/src/lib-storage/mail-error.h index 276d2079b7..81c05d64ee 100644 --- a/src/lib-storage/mail-error.h +++ b/src/lib-storage/mail-error.h @@ -51,6 +51,9 @@ enum mail_error { MAIL_ERROR_INVALIDDATA, /* Operation ran against some kind of a limit. */ MAIL_ERROR_LIMIT, + /* Operation couldn't be finished as efficiently as required by + mail.lookup_abort. */ + MAIL_ERROR_LOOKUP_ABORTED, /* FIXME: Obsolete - remove in v2.3 */ MAIL_ERROR_NOSPACE = MAIL_ERROR_NOQUOTA diff --git a/src/lib-storage/mail.c b/src/lib-storage/mail.c index da40b2e041..bbb7030de5 100644 --- a/src/lib-storage/mail.c +++ b/src/lib-storage/mail.c @@ -247,7 +247,7 @@ int mail_get_header_stream(struct mail *mail, void mail_set_aborted(struct mail *mail) { - mail_storage_set_error(mail->box->storage, MAIL_ERROR_NOTPOSSIBLE, + mail_storage_set_error(mail->box->storage, MAIL_ERROR_LOOKUP_ABORTED, "Mail field not cached"); } diff --git a/src/pop3/pop3-client.c b/src/pop3/pop3-client.c index a1585fa1ec..5772249ad3 100644 --- a/src/pop3/pop3-client.c +++ b/src/pop3/pop3-client.c @@ -97,7 +97,7 @@ pop3_mail_get_size(struct client *client, struct mail *mail, uoff_t *size_r) if (ret == 0) return 0; - if (mailbox_get_last_mail_error(mail->box) != MAIL_ERROR_NOTPOSSIBLE) + if (mailbox_get_last_mail_error(mail->box) != MAIL_ERROR_LOOKUP_ABORTED) return -1; /* virtual size not available with a fast lookup. @@ -108,7 +108,7 @@ pop3_mail_get_size(struct client *client, struct mail *mail, uoff_t *size_r) if (ret == 0) return 0; - if (mailbox_get_last_mail_error(mail->box) != MAIL_ERROR_NOTPOSSIBLE) + if (mailbox_get_last_mail_error(mail->box) != MAIL_ERROR_LOOKUP_ABORTED) return -1; /* no way to quickly get the size. fallback to doing a slow virtual