]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
submission: Add support for module contexts to backend.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 27 Oct 2018 10:20:01 +0000 (12:20 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Tue, 12 Feb 2019 13:41:38 +0000 (15:41 +0200)
src/submission/submission-backend.c
src/submission/submission-backend.h

index 6b8ca05ae23c1cd095cb21b1d98faa51b67999c3..062c2609c9de1e6c277274d3b2f0cffe13b52b4f 100644 (file)
@@ -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);
 }
index 08e6b50d6748dd6d2be34b3f0bde0396cc36149a..25d23894fd7ab7fb04a9d55980510b3a0486cc52 100644 (file)
@@ -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);