From: Stephan Bosch Date: Sat, 9 Feb 2019 13:30:53 +0000 (+0100) Subject: lib-smtp: smtp-client-transaction - Free the mail object in smtp_client_transaction_m... X-Git-Tag: 2.3.7~115 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=82c6cfb1df8e250fe57c99563d11b0813cd2606b;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-client-transaction - Free the mail object in smtp_client_transaction_mail_fail_reply(). --- diff --git a/src/lib-smtp/smtp-client-transaction.c b/src/lib-smtp/smtp-client-transaction.c index 1ab31d5483..37c0976edd 100644 --- a/src/lib-smtp/smtp-client-transaction.c +++ b/src/lib-smtp/smtp-client-transaction.c @@ -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 */