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);
}
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)
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,
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);