changeset 21606:6f2e7eb1ee90

lib-storage: Add explicit MAIL_ERROR_LOOKUP_ABORT error The MAIL_ERROR_NOTPOSSIBLE was a bit too generic to assume to mean the same thing. It doesn't look like there are any external plugins that break because of this change.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sat, 18 Feb 2017 05:01:50 +0200
parents bcd286fcdbad
children 39943da54ca7
files src/doveadm/doveadm-mail.c src/imap/imap-commands-util.c src/lib-storage/index/index-mailbox-size.c src/lib-storage/index/index-search.c src/lib-storage/index/index-sort.c src/lib-storage/mail-error.h src/lib-storage/mail.c src/pop3/pop3-client.c
diffstat 8 files changed, 13 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/doveadm/doveadm-mail.c	Sat Feb 18 05:01:50 2017 +0200
@@ -84,6 +84,8 @@
 	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 */
--- a/src/imap/imap-commands-util.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/imap/imap-commands-util.c	Sat Feb 18 05:01:50 2017 +0200
@@ -141,6 +141,7 @@
 	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:
--- a/src/lib-storage/index/index-mailbox-size.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/lib-storage/index/index-mailbox-size.c	Sat Feb 18 05:01:50 2017 +0200
@@ -331,7 +331,7 @@
 		}
 		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);
 
--- a/src/lib-storage/index/index-search.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/lib-storage/index/index-search.c	Sat Feb 18 05:01:50 2017 +0200
@@ -82,8 +82,8 @@
 	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);
--- a/src/lib-storage/index/index-sort.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/lib-storage/index/index-sort.c	Sat Feb 18 05:01:50 2017 +0200
@@ -43,7 +43,7 @@
 	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.");
--- a/src/lib-storage/mail-error.h	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/lib-storage/mail-error.h	Sat Feb 18 05:01:50 2017 +0200
@@ -51,6 +51,9 @@
 	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
--- a/src/lib-storage/mail.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/lib-storage/mail.c	Sat Feb 18 05:01:50 2017 +0200
@@ -247,7 +247,7 @@
 
 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");
 }
 
--- a/src/pop3/pop3-client.c	Fri Feb 17 19:29:03 2017 +0200
+++ b/src/pop3/pop3-client.c	Sat Feb 18 05:01:50 2017 +0200
@@ -97,7 +97,7 @@
 	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 @@
 	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