]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-smtp: smtp-client-transaction - Handle recipient DATA callback in a separate...
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 9 Feb 2019 11:17:40 +0000 (12:17 +0100)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Fri, 28 Jun 2019 07:09:28 +0000 (10:09 +0300)
src/lib-smtp/smtp-client-transaction.c

index 37f244cc1c9d8bf65c10de5e257bbba4b9327f3a..211d49f7738f256ab2edbba678d27f6b581a184a 100644 (file)
@@ -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;