static const struct smtp_server_callbacks smtp_callbacks;
static const struct submission_client_vfuncs submission_client_vfuncs;
+struct submission_module_register submission_module_register = { 0 };
+
struct client *submission_clients;
unsigned int submission_client_count;
client_parse_backend_capabilities(client);
+ p_array_init(&client->module_contexts, client->pool, 5);
+
client->conn = smtp_server_connection_create(smtp_server,
fd_in, fd_out, user->conn.remote_ip, user->conn.remote_port,
FALSE, &smtp_set, &smtp_callbacks, client);
struct submission_backend *backends;
unsigned int backends_count;
+ /* Module-specific contexts. */
+ ARRAY(union submission_module_context *) module_contexts;
+
bool standalone:1;
bool disconnected:1;
bool destroyed:1;
bool backend_capabilities_configured:1;
};
+struct submission_module_register {
+ unsigned int id;
+};
+
+union submission_module_context {
+ struct submission_client_vfuncs super;
+ struct submission_module_register *reg;
+};
+extern struct submission_module_register submission_module_register;
+
extern struct client *submission_clients;
extern unsigned int submission_client_count;