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");
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) {
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");