From: Stephan Bosch Date: Sun, 16 Sep 2018 19:47:10 +0000 (+0200) Subject: submission: Implement client vfuncs for transaction start and free. X-Git-Tag: 2.3.5~143 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b8998f060b98942fde79593a33f220d4b1b28b92;p=thirdparty%2Fdovecot%2Fcore.git submission: Implement client vfuncs for transaction start and free. --- diff --git a/src/submission/submission-client.c b/src/submission/submission-client.c index 474f74223d..92d10770a2 100644 --- a/src/submission/submission-client.c +++ b/src/submission/submission-client.c @@ -330,6 +330,13 @@ client_connection_trans_start(void *context, client->state.pool = pool_alloconly_create("submission client state", 1024); + client->v.trans_start(client, trans); +} + +static void +client_default_trans_start(struct client *client, + struct smtp_server_transaction *trans) +{ submission_backends_trans_start(client, trans); } @@ -338,6 +345,14 @@ client_connection_trans_free(void *context, struct smtp_server_transaction *trans) { struct client *client = context; + + client->v.trans_free(client, trans); +} + +static void +client_default_trans_free(struct client *client, + struct smtp_server_transaction *trans) +{ struct submission_recipient **rcptp; array_foreach_modifiable(&client->rcpt_to, rcptp) @@ -521,6 +536,9 @@ static const struct smtp_server_callbacks smtp_callbacks = { static const struct submission_client_vfuncs submission_client_vfuncs = { client_default_destroy, + .trans_start = client_default_trans_start, + .trans_free = client_default_trans_free, + .cmd_helo = client_default_cmd_helo, .cmd_mail = client_default_cmd_mail, diff --git a/src/submission/submission-client.h b/src/submission/submission-client.h index 8329d4700b..64e6cc730b 100644 --- a/src/submission/submission-client.h +++ b/src/submission/submission-client.h @@ -21,6 +21,11 @@ struct submission_client_vfuncs { void (*destroy)(struct client *client, const char *prefix, const char *reason); + void (*trans_start)(struct client *client, + struct smtp_server_transaction *trans); + void (*trans_free)(struct client *client, + struct smtp_server_transaction *trans); + int (*cmd_helo)(struct client *client, struct smtp_server_cmd_ctx *cmd, struct smtp_server_cmd_helo *data);