From 1c717024b355ffaa04b4a09e5856373fd9fb53b9 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Wed, 11 Apr 2018 15:27:42 +0300 Subject: [PATCH] lib-master: Add own boolean for SSL module loading want_ssl_settings isn't reliable enough. --- src/lib-master/master-service-private.h | 1 + src/lib-master/master-service.c | 9 ++++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib-master/master-service-private.h b/src/lib-master/master-service-private.h index 1042808266..66483df7b7 100644 --- a/src/lib-master/master-service-private.h +++ b/src/lib-master/master-service-private.h @@ -85,6 +85,7 @@ struct master_service { bool ssl_ctx_initialized:1; bool config_path_from_master:1; bool log_initialized:1; + bool ssl_module_loaded:1; }; void master_service_io_listeners_add(struct master_service *service); diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 40143b4ed1..45a23282fb 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -263,8 +263,11 @@ master_service_init(const char *name, enum master_service_flags flags, #ifdef HAVE_SSL /* load SSL module if necessary */ - if (service->want_ssl_settings && ssl_module_load(&error) < 0) - i_fatal("Cannot load SSL module: %s", error); + if (service->want_ssl_settings) { + if (ssl_module_load(&error) < 0) + i_fatal("Cannot load SSL module: %s", error); + service->ssl_module_loaded = TRUE; + } #endif /* set up some kind of logging until we know exactly how and where @@ -1277,5 +1280,5 @@ bool version_string_verify_full(const char *line, const char *service_name, 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; + return service->ssl_module_loaded; }