]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Load SSL module if wanted by service
authorAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 16 Oct 2017 07:56:17 +0000 (10:56 +0300)
committerTimo Sirainen <tss@dovecot.fi>
Tue, 31 Oct 2017 15:35:48 +0000 (17:35 +0200)
src/lib-master/master-service.c
src/lib-master/master-service.h

index 6ec0e00477817673c02fa2bfb83bf724238e3c55..4f8348710852f2100e97c5c3eb2ffc68219f2e21 100644 (file)
@@ -17,6 +17,7 @@
 #include "master-service-ssl.h"
 #include "master-service-private.h"
 #include "master-service-settings.h"
+#include "iostream-ssl.h"
 
 #include <unistd.h>
 #include <sys/stat.h>
@@ -178,6 +179,7 @@ master_service_init(const char *name, enum master_service_flags flags,
        data_stack_frame_t datastack_frame_id = 0;
        unsigned int count;
        const char *value;
+       const char *error;
 
        i_assert(name != NULL);
 
@@ -257,6 +259,10 @@ master_service_init(const char *name, enum master_service_flags flags,
                master_service_init_socket_listeners(service);
        } T_END;
 
+       /* load SSL module if necessary */
+       if (service->want_ssl_settings && ssl_module_load(&error) < 0)
+               i_fatal("Cannot load SSL module: %s", error);
+
        /* set up some kind of logging until we know exactly how and where
           we want to log */
        if (getenv("LOG_SERVICE") != NULL)
@@ -1237,3 +1243,9 @@ bool version_string_verify_full(const char *line, const char *service_name,
        } T_END;
        return ret;
 }
+
+bool master_service_is_ssl_module_loaded(struct master_service *service)
+{
+       /* if this is TRUE, then ssl module is loaded by init */
+       return service->want_ssl_settings;
+}
index 022ad85532e0f5f011de1406ff56906c1651b660..7cdcc387d385a2648448a6063a028fd4800a0eb3 100644 (file)
@@ -221,4 +221,7 @@ bool version_string_verify_full(const char *line, const char *service_name,
                                unsigned major_version,
                                unsigned int *minor_version_r);
 
+/* Returns TRUE if ssl module has been loaded */
+bool master_service_is_ssl_module_loaded(struct master_service *service);
+
 #endif