]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: lmtp-proxy - Add approved recipient hook before initiating connection.
authorStephan Bosch <stephan.bosch@open-xchange.com>
Sun, 7 Jun 2020 23:22:47 +0000 (01:22 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 17 Jan 2022 11:52:09 +0000 (13:52 +0200)
Before, it was added in the client login callback, which can be called more than
once after later commits.

src/lmtp/lmtp-proxy.c

index 36808c52516b83ccf760545bc9a035566ddaee04..4dc20add1e5188c175d08327928aa533e9b84ea4 100644 (file)
@@ -575,10 +575,6 @@ lmtp_proxy_rcpt_login_cb(const struct smtp_reply *proxy_reply, void *context)
                        lprcpt->forward_fields, lprcpt->forward_fields_size);
        }
 
-       smtp_server_recipient_add_hook(
-               rcpt, SMTP_SERVER_RECIPIENT_HOOK_APPROVED,
-               lmtp_proxy_rcpt_approved, lprcpt);
-
        relay_rcpt = smtp_client_transaction_add_pool_rcpt(
                conn->lmtp_trans, rcpt->pool, lprcpt->address, rcpt_params,
                lmtp_proxy_rcpt_cb, lprcpt);
@@ -706,6 +702,10 @@ int lmtp_proxy_rcpt(struct client *client,
        lprcpt->address = smtp_address_clone(rcpt->pool, address);
        lprcpt->conn = conn;
 
+       smtp_server_recipient_add_hook(
+               rcpt, SMTP_SERVER_RECIPIENT_HOOK_APPROVED,
+               lmtp_proxy_rcpt_approved, lprcpt);
+
        /* Copy forward fields returned from passdb */
        fwfields = NULL;
        for (const char *const *ptr = fields; *ptr != NULL; ptr++) {