From: Stephan Bosch Date: Sat, 9 Feb 2019 11:17:40 +0000 (+0100) Subject: lib-smtp: smtp-client-transaction - Handle recipient DATA callback in a separate... X-Git-Tag: 2.3.9~795 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbf3b9822b2e48ed49e94fefa2587477b1bd60a6;p=thirdparty%2Fdovecot%2Fcore.git lib-smtp: smtp-client-transaction - Handle recipient DATA callback in a separate _rcpt function. --- diff --git a/src/lib-smtp/smtp-client-transaction.c b/src/lib-smtp/smtp-client-transaction.c index 37f244cc1c..211d49f773 100644 --- a/src/lib-smtp/smtp-client-transaction.c +++ b/src/lib-smtp/smtp-client-transaction.c @@ -292,6 +292,15 @@ void smtp_client_transaction_rcpt_abort( smtp_client_transaction_rcpt_free(_rcpt); } +static void +smtp_client_transaction_rcpt_finished(struct smtp_client_transaction_rcpt *rcpt, + const struct smtp_reply *reply) +{ + if (rcpt->data_callback != NULL) + rcpt->data_callback(reply, rcpt->data_context); + rcpt->data_callback = NULL; +} + #undef smtp_client_transaction_rcpt_set_data_callback void smtp_client_transaction_rcpt_set_data_callback( struct smtp_client_transaction_rcpt *rcpt, @@ -948,9 +957,7 @@ smtp_client_transaction_data_cb(const struct smtp_reply *reply, struct smtp_client_transaction_rcpt *rcpt = trans->rcpts_data; trans->rcpts_data = trans->rcpts_data->next; - if (rcpt->data_callback != NULL) - rcpt->data_callback(reply, rcpt->data_context); - rcpt->data_callback = NULL; + smtp_client_transaction_rcpt_finished(rcpt, reply); if (HAS_ALL_BITS(trans->flags, SMTP_CLIENT_TRANSACTION_FLAG_REPLY_PER_RCPT)) break;