]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-command - Drop callback before call in smtp_client_command_inpu...
authorStephan Bosch <stephan.bosch@open-xchange.com>
Fri, 25 Sep 2020 00:45:27 +0000 (02:45 +0200)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Thu, 18 Nov 2021 17:08:45 +0000 (17:08 +0000)
src/lib-smtp/smtp-client-command.c

index 203a4df7f2b6161b7c7aa7a820f1584f7042b5a5..61cd188343b34ef66cffe4da63644b38ee337d50 100644 (file)
@@ -952,6 +952,8 @@ int smtp_client_command_input_reply(struct smtp_client_command *cmd,
                                    const struct smtp_reply *reply)
 {
        struct smtp_client_connection *conn = cmd->conn;
+       smtp_client_command_callback_t *callback = cmd->callback;
+       void *context = cmd->context;
        bool finished;
 
        i_assert(cmd->replies_seen < cmd->replies_expected);
@@ -982,13 +984,13 @@ int smtp_client_command_input_reply(struct smtp_client_command *cmd,
                        cmd->state = SMTP_CLIENT_COMMAND_STATE_FINISHED;
 
                smtp_client_connection_update_cmd_timeout(conn);
+               smtp_client_command_drop_callback(cmd);
        }
 
-       if (!cmd->aborting && cmd->callback != NULL)
-               cmd->callback(reply, cmd->context);
+       if (!cmd->aborting && callback != NULL)
+               callback(reply, context);
 
        if (finished) {
-               smtp_client_command_drop_callback(cmd);
                smtp_client_command_unref(&cmd);
                smtp_client_connection_trigger_output(conn);
        }