]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: local: Properly handle a user being over quota.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Fri, 15 Dec 2017 22:28:58 +0000 (23:28 +0100)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Sat, 16 Dec 2017 13:58:15 +0000 (15:58 +0200)
Recent changes caused quota enforcement to be ineffective.

src/lmtp/lmtp-local.c

index 8c6a2c43ada5e727450bfd76049e4018a6aae6f1..99a219f59f6c27f0c04c840203cd517852be01c7 100644 (file)
@@ -229,20 +229,20 @@ lmtp_local_rcpt_check_quota(struct lmtp_local_recipient *rcpt)
                        error = mailbox_get_last_error(box, &mail_error);
                        if (mail_error == MAIL_ERROR_NOQUOTA) {
                                lmtp_local_rcpt_reply_overquota(rcpt, error);
-                               ret = 0;
                        } else {
                                i_error("mailbox_get_status(%s, STATUS_CHECK_OVER_QUOTA) "
                                        "failed: %s",
                                        mailbox_get_vname(box),
                                        mailbox_get_last_internal_error(box, NULL));
-                               ret = -1;
                        }
+                       ret = -1;
                }
                mailbox_free(&box);
                mail_user_unref(&user);
        }
 
-       if (ret < 0) {
+       if (ret < 0 &&
+               !smtp_server_command_is_replied(rcpt->rcpt.rcpt_cmd->cmd)) {
                smtp_server_reply(rcpt->rcpt.rcpt_cmd,
                        451, "4.3.0", "<%s> Temporary internal error",
                        smtp_address_encode(address));