]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-transaction - Free the mail object in smtp_client_transaction_m...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 9 Feb 2019 13:30:53 +0000 (14:30 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 28 Jun 2019 07:09:28 +0000 (10:09 +0300)
src/lib-smtp/smtp-client-transaction.c

index 1ab31d5483038fe70cbb26cf4d85eba5bf3a3888..37c0976edd3db7827260a1599ad439b742d84ef6 100644 (file)
@@ -114,9 +114,10 @@ void smtp_client_transaction_mail_abort(
 
 static void
 smtp_client_transaction_mail_fail_reply(
-       struct smtp_client_transaction_mail *mail,
+       struct smtp_client_transaction_mail **_mail,
        const struct smtp_reply *reply)
 {
+       struct smtp_client_transaction_mail *mail = *_mail;
        smtp_client_command_callback_t *callback = mail->mail_callback;
        void *context = mail->context;
 
@@ -124,6 +125,8 @@ smtp_client_transaction_mail_fail_reply(
 
        if (callback != NULL)
                callback(reply, context);
+
+       smtp_client_transaction_mail_free(_mail);
 }
 
 /*
@@ -530,8 +533,7 @@ void smtp_client_transaction_fail_reply(struct smtp_client_transaction *trans,
 
                if (mail->cmd_mail_from != NULL)
                        smtp_client_command_abort(&mail->cmd_mail_from);
-               smtp_client_transaction_mail_fail_reply(mail, reply);
-               smtp_client_transaction_mail_free(&mail);
+               smtp_client_transaction_mail_fail_reply(&mail, reply);
        }
 
        /* RCPT */