changeset 17915:10d11d9c0c98

lda, lmtp: Use mail_deliver_context.tempfail_error first if it exists (instead of storage error).
author Timo Sirainen <tss@iki.fi>
date Wed, 08 Oct 2014 22:10:34 +0300
parents f0015ab0efb1
children 90fbf199ebda
files src/lda/main.c src/lmtp/commands.c
diffstat 2 files changed, 7 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lda/main.c	Wed Oct 08 16:28:40 2014 +0300
+++ b/src/lda/main.c	Wed Oct 08 22:10:34 2014 +0300
@@ -435,11 +435,11 @@
 	lda_set_dest_addr(&ctx, user, destaddr_source);
 
 	if (mail_deliver(&ctx, &storage) < 0) {
-		if (storage != NULL) {
-			errstr = mail_storage_get_last_error(storage, &error);
-		} else if (ctx.tempfail_error != NULL) {
+		if (ctx.tempfail_error != NULL) {
 			errstr = ctx.tempfail_error;
 			error = MAIL_ERROR_TEMP;
+		} else if (storage != NULL) {
+			errstr = mail_storage_get_last_error(storage, &error);
 		} else {
 			/* This shouldn't happen */
 			i_error("BUG: Saving failed to unknown storage");
--- a/src/lmtp/commands.c	Wed Oct 08 16:28:40 2014 +0300
+++ b/src/lmtp/commands.c	Wed Oct 08 22:10:34 2014 +0300
@@ -694,6 +694,10 @@
 		client_send_line(client, "250 2.0.0 <%s> %s Saved",
 				 rcpt->address, client->state.session_id);
 		ret = 0;
+	} else if (dctx.tempfail_error != NULL) {
+		client_send_line(client, "451 4.2.0 <%s> %s",
+				 rcpt->address, dctx.tempfail_error);
+		ret = -1;
 	} else if (storage != NULL) {
 		error = mail_storage_get_last_error(storage, &mail_error);
 		if (mail_error == MAIL_ERROR_NOQUOTA) {
@@ -706,10 +710,6 @@
 					 rcpt->address, error);
 		}
 		ret = -1;
-	} else if (dctx.tempfail_error != NULL) {
-		client_send_line(client, "451 4.2.0 <%s> %s",
-				 rcpt->address, dctx.tempfail_error);
-		ret = -1;
 	} else {
 		/* This shouldn't happen */
 		i_error("BUG: Saving failed to unknown storage");