Mercurial > dovecot > core-2.2
changeset 19464:81450c4bfe96
lmtp: quota_full_tempfail=yes didn't work with lmtp_rcpt_check_quota=yes
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 06 Dec 2015 14:57:22 +0200 |
parents | 183576574417 |
children | 74e9e665b8f1 |
files | src/lmtp/commands.c |
diffstat | 1 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lmtp/commands.c Sun Dec 06 14:27:46 2015 +0200 +++ b/src/lmtp/commands.c Sun Dec 06 14:57:22 2015 +0200 @@ -538,6 +538,17 @@ *address = str_c(username); } +static void +client_send_line_overquota(struct client *client, + const struct mail_recipient *rcpt, const char *error) +{ + struct lda_settings *lda_set = + mail_storage_service_user_get_set(rcpt->service_user)[1]; + + client_send_line(client, "%s <%s> %s", lda_set->quota_full_tempfail ? + "452 4.2.2" : "552 5.2.2", rcpt->address, error); +} + static int lmtp_rcpt_to_is_over_quota(struct client *client, const struct mail_recipient *rcpt) @@ -564,8 +575,7 @@ if (ret < 0) { errstr = mailbox_get_last_error(box, &error); if (error == MAIL_ERROR_NOQUOTA) { - client_send_line(client, "552 5.2.2 <%s> %s", - rcpt->address, errstr); + client_send_line_overquota(client, rcpt, errstr); ret = 1; } } @@ -867,10 +877,7 @@ } else if (storage != NULL) { error = mail_storage_get_last_error(storage, &mail_error); if (mail_error == MAIL_ERROR_NOQUOTA) { - client_send_line(client, "%s <%s> %s", - dctx.set->quota_full_tempfail ? - "452 4.2.2" : "552 5.2.2", - rcpt->address, error); + client_send_line_overquota(client, rcpt, error); } else { client_send_line(client, "451 4.2.0 <%s> %s", rcpt->address, error);