From: Stephan Bosch Date: Sat, 29 Sep 2018 13:31:14 +0000 (+0200) Subject: lib-smtp: client: Clear command callback early to prevent mishaps. X-Git-Tag: 2.3.9~1272 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3743378198d726336c3929654c643e3bd1bb0af7;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: client: Clear command callback early to prevent mishaps. --- 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); }