From a357af3d502a4c825286e3791b2d450c703104bf Mon Sep 17 00:00:00 2001 From: Stephan Bosch Date: Sun, 14 Oct 2018 23:00:11 +0200 Subject: [PATCH] submission: relay backend: Properly manage the trans_started flag. Sometimes it was not set at all. This didn't lead to problems in most cases, but this was at least confusing while debugging. Also, the flag is set before the client transaction is actually started, making sure (future) recursive problems will not occur. --- src/submission/submission-backend-relay.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/submission/submission-backend-relay.c b/src/submission/submission-backend-relay.c index a2a1deeaa0..c1bb8f6339 100644 --- a/src/submission/submission-backend-relay.c +++ b/src/submission/submission-backend-relay.c @@ -117,6 +117,7 @@ backend_relay_trans_start(struct submission_backend *_backend, (struct submission_backend_relay *)_backend; if (backend->trans == NULL) { + backend->trans_started = TRUE; backend->trans = smtp_client_transaction_create( backend->conn, trans->mail_from, &trans->params, backend_relay_trans_finished, backend); @@ -125,6 +126,7 @@ backend_relay_trans_start(struct submission_backend *_backend, backend->trans, backend_relay_trans_start_callback, backend); } else if (!backend->trans_started) { + backend->trans_started = TRUE; smtp_client_transaction_start_empty( backend->trans, trans->mail_from, &trans->params, backend_relay_trans_start_callback, backend); @@ -142,6 +144,7 @@ backend_relay_trans_free(struct submission_backend *_backend, return; smtp_client_transaction_destroy(&backend->trans); + backend->trans_started = FALSE; } /* @@ -404,13 +407,13 @@ backend_relay_cmd_mail(struct submission_backend *_backend, if (backend->trans == NULL) { /* start client transaction */ + backend->trans_started = TRUE; backend->trans = smtp_client_transaction_create( backend->conn, data->path, &data->params, backend_relay_trans_finished, backend); smtp_client_transaction_set_immediate(backend->trans, TRUE); smtp_client_transaction_start(backend->trans, relay_cmd_mail_callback, mail_cmd); - backend->trans_started = TRUE; } else { /* forward pipelined MAIL command */ i_assert(backend->trans_started); -- 2.47.3