]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: relay backend: Allow creating the client transaction with specific flags.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Thu, 25 Oct 2018 21:50:55 +0000 (23:50 +0200)
committerStephan Bosch <stephan.bosch@dovecot.fi>
Mon, 29 Oct 2018 16:42:52 +0000 (17:42 +0100)
src/submission/submission-backend-relay.c
src/submission/submission-backend-relay.h

index a3d107f61caca9d47e8aac09c9af62fda61c7ecc..ea8029c2185b4d63a1e0edb87d6accb416bb7eb0 100644 (file)
@@ -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);
index dc3cd54d134aedb78dcc0f9978c200a3d77855c4..3313620a16ea09d76b52498c9167228f99dfdae5 100644 (file)
@@ -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