]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Add master_service_settings_input.extra_modules
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 12 Feb 2021 17:17:25 +0000 (19:17 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Fri, 21 May 2021 07:46:29 +0000 (07:46 +0000)
This allows specifying more than one module.

src/lib-master/master-service-settings.c
src/lib-master/master-service-settings.h

index eded8d139bd1cb38e0c63fb2e9ddfb41db38b5c5..d9c70eb333e612681e59297fc3421f0a5b4e759f 100644 (file)
@@ -216,11 +216,18 @@ master_service_exec_config(struct master_service *service,
        if (input->module != NULL) {
                strarr_push(&conf_argv, "-m");
                strarr_push(&conf_argv, input->module);
-               if (service->want_ssl_settings) {
+       }
+       if (input->extra_modules != NULL) {
+               for (unsigned int i = 0; input->extra_modules[i] != NULL; i++) {
                        strarr_push(&conf_argv, "-m");
-                       strarr_push(&conf_argv, "ssl");
+                       strarr_push(&conf_argv, input->extra_modules[i]);
                }
        }
+       if (service->want_ssl_settings &&
+           (input->module != NULL || input->extra_modules != NULL)) {
+               strarr_push(&conf_argv, "-m");
+               strarr_push(&conf_argv, "ssl");
+       }
        if (input->parse_full_config)
                strarr_push(&conf_argv, "-p");
 
index b8d75b442763f473c6b3310e4c3b0684db889a72..4fe281f4148b6e1cb49de2247812efa336a5fd8d 100644 (file)
@@ -41,7 +41,10 @@ struct master_service_settings_input {
        bool use_sysexits;
        bool parse_full_config;
 
+       /* Either/both module and extra_modules can be set. Usually just one
+          is needed, so module is simpler to set. */
        const char *module;
+       const char *const *extra_modules;
        const char *service;
        const char *username;
        struct ip_addr local_ip, remote_ip;