]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Unload modules at exit.
authorTimo Sirainen <tss@iki.fi>
Wed, 5 May 2010 13:46:12 +0000 (16:46 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 5 May 2010 13:46:12 +0000 (16:46 +0300)
--HG--
branch : HEAD

src/config/config-parser.c
src/config/config-parser.h
src/config/doveconf.c
src/config/main.c

index 87123406d6fe1de0bffae15910b8fcc109f66467..f9922c5c33664e2513e895f0b4c71563d0e4e28b 100644 (file)
@@ -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;
index 6029b5751cfef673c4efe5e5ec33f5af9eb3e145..d4ce8dfbbc12652abdb7f15ca27108d6998d839e 100644 (file)
@@ -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);
index 552ee168f96c32dc6130726bc3eb7b79ac6ed909..bc14f12d965ed5a2ec78aa71880061d6897ac700 100644 (file)
@@ -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;
 }
index 741e20a3e55b042d35a64c2444db554bff3170d7..c1616f341b471a68a07ca317ed97acffa6611674 100644 (file)
@@ -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;
 }