From: Aki Tuomi Date: Mon, 16 Oct 2017 07:56:17 +0000 (+0300) Subject: lib-master: Load SSL module if wanted by service X-Git-Tag: 2.3.0.rc1~675 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=754896551f0422cda5d78500b26700eec5343c5b;p=thirdparty%2Fdovecot%2Fcore.git lib-master: Load SSL module if wanted by service --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 6ec0e00477..4f83487108 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -17,6 +17,7 @@ #include "master-service-ssl.h" #include "master-service-private.h" #include "master-service-settings.h" +#include "iostream-ssl.h" #include #include @@ -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; +} diff --git a/src/lib-master/master-service.h b/src/lib-master/master-service.h index 022ad85532..7cdcc387d3 100644 --- a/src/lib-master/master-service.h +++ b/src/lib-master/master-service.h @@ -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