From 3743378198d726336c3929654c643e3bd1bb0af7 Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Sat, 29 Sep 2018 15:31:14 +0200 Subject: [PATCH] lib-smtp: client: Clear command callback early to prevent mishaps. --- src/lib-smtp/smtp-client-command.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib-smtp/smtp-client-command.c b/src/lib-smtp/smtp-client-command.c index 346502ed15..546af8992b 100644 --- a/src/lib-smtp/smtp-client-command.c +++ b/src/lib-smtp/smtp-client-command.c @@ -211,6 +211,8 @@ void smtp_client_command_abort(struct smtp_client_command **_cmd) *_cmd = NULL; + smtp_client_command_drop_callback(cmd); + if ((!disconnected && !cmd->plug && cmd->aborting) || state >= SMTP_CLIENT_COMMAND_STATE_FINISHED) return; @@ -223,7 +225,6 @@ void smtp_client_command_abort(struct smtp_client_command **_cmd) i_assert(state < SMTP_CLIENT_COMMAND_STATE_FINISHED); cmd->aborting = TRUE; } - cmd->callback = NULL; cmd->locked = FALSE; i_assert(!cmd->plug || state <= SMTP_CLIENT_COMMAND_STATE_SUBMITTED); @@ -826,6 +827,7 @@ smtp_client_command_input_reply(struct smtp_client_command *cmd, cmd->callback(reply, cmd->context); if (finished) { + smtp_client_command_drop_callback(cmd); smtp_client_command_unref(&cmd); smtp_client_connection_trigger_output(conn); } -- 2.47.3