]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-command - Make smtp_client_command_drop_callback(NULL) a no-op
authorStephan Bosch <stephan.bosch@open-xchange.com>
Thu, 19 Jun 2025 10:02:03 +0000 (12:02 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Sun, 29 Jun 2025 17:22:15 +0000 (17:22 +0000)
src/lib-smtp/smtp-client-command.c
src/lib-smtp/smtp-client-transaction.c

index 05757ee9d7d4c0b121856aa7813c0132c106cdbf..f4f17f1d4d66c1b6afa9f0d6438d7e0a9590065c 100644 (file)
@@ -286,6 +286,8 @@ void smtp_client_command_abort(struct smtp_client_command **_cmd)
 
 void smtp_client_command_drop_callback(struct smtp_client_command *cmd)
 {
+       if (cmd == NULL)
+               return;
        cmd->callback = NULL;
        cmd->context = NULL;
 }
index f1430676ad3ca9db792a7f12033dbf79c95d20ef..ad0cac08e82d7c534e9127c52753c95e15e3c666 100644 (file)
@@ -696,17 +696,13 @@ void smtp_client_transaction_destroy(struct smtp_client_transaction **_trans)
           We cannot fully abort (destroy) these commands, as this may be
           called from a callback. */
        for (mail = trans->mail_head; mail != NULL; mail = mail->next) {
-               if (mail->cmd_mail_from != NULL)
-                       smtp_client_command_drop_callback(mail->cmd_mail_from);
+               smtp_client_command_drop_callback(mail->cmd_mail_from);
        }
        for (rcpt = trans->rcpts_queue_head; rcpt != NULL; rcpt = rcpt->next) {
-               if (rcpt->cmd_rcpt_to != NULL)
-                       smtp_client_command_drop_callback(rcpt->cmd_rcpt_to);
+               smtp_client_command_drop_callback(rcpt->cmd_rcpt_to);
        }
-       if (trans->cmd_data != NULL)
-               smtp_client_command_drop_callback(trans->cmd_data);
-       if (trans->cmd_rset != NULL)
-               smtp_client_command_drop_callback(trans->cmd_rset);
+       smtp_client_command_drop_callback(trans->cmd_data);
+       smtp_client_command_drop_callback(trans->cmd_rset);
        smtp_client_command_abort(&trans->cmd_plug);
 
        /* Free any approved recipients early */