From: Stephan Bosch Date: Thu, 25 Oct 2018 21:50:55 +0000 (+0200) Subject: submission: relay backend: Allow creating the client transaction with specific flags. X-Git-Tag: 2.3.9~1115 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3bbf1d4a2ccaf40f99d67cc697087c7d80fa7b8f;p=thirdparty%2Fdovecot%2Fcore.git submission: relay backend: Allow creating the client transaction with specific flags. --- diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index a3d107f61c..ea8029c218 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -188,6 +188,21 @@ backend_relay_trans_free(struct submission_backend *_backend, smtp_client_transaction_destroy(&backend->trans); } +struct smtp_client_transaction * +submission_backend_relay_init_transaction( + struct submission_backend_relay *backend, + enum smtp_client_transaction_flags flags) +{ + i_assert(backend->trans == NULL); + + backend->trans = smtp_client_transaction_create_empty( + backend->conn, flags, + backend_relay_trans_finished, backend); + smtp_client_transaction_set_immediate(backend->trans, TRUE); + + return backend->trans; +} + /* * EHLO, HELO commands */ @@ -538,12 +553,8 @@ backend_relay_cmd_rcpt(struct submission_backend *_backend, smtp_server_command_add_hook(cmd->cmd, SMTP_SERVER_COMMAND_HOOK_REPLIED, relay_cmd_rcpt_replied, rcpt_cmd); - if (backend->trans == NULL) { - backend->trans = smtp_client_transaction_create_empty( - backend->conn, 0, - backend_relay_trans_finished, backend); - smtp_client_transaction_set_immediate(backend->trans, TRUE); - } + if (backend->trans == NULL) + (void)submission_backend_relay_init_transaction(backend, 0); rcpt_cmd->relay_rcpt = smtp_client_transaction_add_pool_rcpt( backend->trans, rcpt->pool, rcpt->path, &rcpt->params, relay_cmd_rcpt_callback, rcpt_cmd); diff --git a/src/submission/submission-backend-relay.h b/src/submission/submission-backend-relay.h index dc3cd54d13..3313620a16 100644 --- a/src/submission/submission-backend-relay.h +++ b/src/submission/submission-backend-relay.h @@ -2,6 +2,7 @@ #define SUBMISSION_BACKEND_RELAY_H #include "smtp-client-connection.h" +#include "smtp-client-transaction.h" #include "submission-backend.h" @@ -51,4 +52,11 @@ struct smtp_client_transaction * submission_backend_relay_get_transaction( struct submission_backend_relay *backend) ATTR_PURE; +/* Initializes the client transaction manually, which allows providing + alternative transaction flags. */ +struct smtp_client_transaction * +submission_backend_relay_init_transaction( + struct submission_backend_relay *backend, + enum smtp_client_transaction_flags flags); + #endif