From: Stephan Bosch Date: Tue, 2 Oct 2018 02:28:10 +0000 (+0200) Subject: lib-smtp: client: transaction: Move initiation of command submission after starting... X-Git-Tag: 2.3.9~1257 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=42fd1786dddcece2ef020f3e1f59e605ed3fea18;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: client: transaction: Move initiation of command submission after starting the transaction timeout. This is a precaution against the emergence of segfaults when command submission somehow terminates the transaction in a future version (actually, a segfault did emerge in an earlier version of this set of changes). Also it is a cosmetic change: putting the most important act at the end of the function makes more sense in this case. --- diff --git a/src/lib-smtp/smtp-client-transaction.c b/src/lib-smtp/smtp-client-transaction.c index 3e5989227a..00fdf3b8fa 100644 --- a/src/lib-smtp/smtp-client-transaction.c +++ b/src/lib-smtp/smtp-client-transaction.c @@ -774,15 +774,16 @@ void smtp_client_transaction_send( trans->data_callback = data_callback; trans->data_context = data_context; - if (trans->to_send == NULL) { - trans->to_send = timeout_add_short(0, - smtp_client_transaction_submit_more, trans); - } if (trans->finish_timeout_msecs > 0) { i_assert(trans->to_finish == NULL); trans->to_finish = timeout_add(trans->finish_timeout_msecs, smtp_client_transaction_timeout, trans); } + + if (trans->to_send == NULL) { + trans->to_send = timeout_add_short(0, + smtp_client_transaction_submit_more, trans); + } } static void