From 1ee1a73bde20380ba39d572681397ad05dcdf9a1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 8 Oct 2014 22:10:34 +0300 Subject: [PATCH] lda, lmtp: Use mail_deliver_context.tempfail_error first if it exists (instead of storage error). --- src/lda/main.c | 6 +++--- src/lmtp/commands.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/lda/main.c b/src/lda/main.c index 12ff72478b..7d53b3c28c 100644 --- a/src/lda/main.c +++ b/src/lda/main.c @@ -435,11 +435,11 @@ int main(int argc, char *argv[]) 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"); diff --git a/src/lmtp/commands.c b/src/lmtp/commands.c index d1860e6d8f..5efb7464c8 100644 --- a/src/lmtp/commands.c +++ b/src/lmtp/commands.c @@ -694,6 +694,10 @@ client_deliver(struct client *client, const struct mail_recipient *rcpt, 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 @@ client_deliver(struct client *client, const struct mail_recipient *rcpt, 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"); -- 2.47.3