From: Stephan Bosch Date: Sat, 27 Oct 2018 10:20:01 +0000 (+0200) Subject: submission: Add support for module contexts to backend. X-Git-Tag: 2.3.5~67 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0df4aa4e980d641cbbd15ffa098566aedf9649f5;p=thirdparty%2Fdovecot%2Fcore.git submission: Add support for module contexts to backend. --- diff --git a/src/submission/submission-backend.c b/src/submission/submission-backend.c index 6b8ca05ae2..062c2609c9 100644 --- a/src/submission/submission-backend.c +++ b/src/submission/submission-backend.c @@ -10,6 +10,9 @@ #include "submission-commands.h" #include "submission-backend.h" +struct submission_backend_module_register +submission_backend_module_register = { 0 }; + void submission_backend_init(struct submission_backend *backend, pool_t pool, struct client *client, const struct submission_backend_vfuncs *vfunc) @@ -18,6 +21,8 @@ void submission_backend_init(struct submission_backend *backend, backend->client = client; backend->v = *vfunc; + p_array_init(&backend->module_contexts, pool, 5); + client->backends_count++; DLLIST_PREPEND(&client->backends, backend); } diff --git a/src/submission/submission-backend.h b/src/submission/submission-backend.h index 08e6b50d67..25d23894fd 100644 --- a/src/submission/submission-backend.h +++ b/src/submission/submission-backend.h @@ -3,6 +3,7 @@ struct submission_recipient; struct submission_backend; +union submission_backend_module_context; struct submission_backend_vfuncs { void (*destroy)(struct submission_backend *backend); @@ -93,11 +94,24 @@ struct submission_backend { char *fail_enh_code; char *fail_reason; + /* Module-specific contexts. */ + ARRAY(union submission_backend_module_context *) module_contexts; + bool started:1; bool ready:1; bool trans_started:1; }; +struct submission_backend_module_register { + unsigned int id; +}; + +union submission_backend_module_context { + struct submission_backend_module_register *reg; +}; +extern struct submission_backend_module_register +submission_backend_module_register; + void submission_backend_init(struct submission_backend *backend, pool_t pool, struct client *client, const struct submission_backend_vfuncs *vfunc);