From: Timo Sirainen Date: Wed, 5 May 2010 13:46:12 +0000 (+0300) Subject: config: Unload modules at exit. X-Git-Tag: 2.0.beta5~9 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=73b8333f9a979efefe1db70f22c63edec5ad4466;p=thirdparty%2Fdovecot%2Fcore.git config: Unload modules at exit. --HG-- branch : HEAD --- diff --git a/src/config/config-parser.c b/src/config/config-parser.c index 87123406d6..f9922c5c33 100644 --- a/src/config/config-parser.c +++ b/src/config/config-parser.c @@ -34,6 +34,7 @@ static const enum settings_parser_flags settings_parser_flags = struct config_module_parser *config_module_parsers; struct config_filter_context *config_filter; +struct module *modules; static const char *info_type_name_find(const struct setting_parser_info *info) { @@ -844,7 +845,7 @@ prevfile: void config_parse_load_modules(void) { struct module_dir_load_settings mod_set; - struct module *modules, *m; + struct module *m; const struct setting_parser_info **roots; ARRAY_DEFINE(new_roots, const struct setting_parser_info *); ARRAY_TYPE(service_settings) new_services; diff --git a/src/config/config-parser.h b/src/config/config-parser.h index 6029b5751c..d4ce8dfbbc 100644 --- a/src/config/config-parser.h +++ b/src/config/config-parser.h @@ -12,6 +12,7 @@ ARRAY_DEFINE_TYPE(config_module_parsers, struct config_module_parser *); extern struct config_module_parser *config_module_parsers; extern struct config_filter_context *config_filter; +extern struct module *modules; int config_parse_file(const char *path, bool expand_values, const char *module, const char **error_r); diff --git a/src/config/doveconf.c b/src/config/doveconf.c index 552ee168f9..bc14f12d96 100644 --- a/src/config/doveconf.c +++ b/src/config/doveconf.c @@ -3,6 +3,7 @@ #include "lib.h" #include "array.h" #include "abspath.h" +#include "module-dir.h" #include "env-util.h" #include "ostream.h" #include "str.h" @@ -592,6 +593,7 @@ int main(int argc, char *argv[]) i_fatal("Errors in configuration"); config_filter_deinit(&config_filter); + module_dir_unload(&modules); master_service_deinit(&master_service); return 0; } diff --git a/src/config/main.c b/src/config/main.c index 741e20a3e5..c1616f341b 100644 --- a/src/config/main.c +++ b/src/config/main.c @@ -1,8 +1,7 @@ /* Copyright (c) 2005-2010 Dovecot authors, see the included COPYING file */ #include "lib.h" -#include "array.h" -#include "env-util.h" +#include "module-dir.h" #include "restrict-access.h" #include "master-service.h" #include "config-connection.h" @@ -37,6 +36,7 @@ int main(int argc, char *argv[]) config_connections_destroy_all(); config_filter_deinit(&config_filter); + module_dir_unload(&modules); master_service_deinit(&master_service); return 0; }