changeset 21593:e8dfebca6899

doveadm: Add explicit mail_storage_init/deinit() calls This mainly prevents losing hooks that were registered by doveadm plugins. Otherwise what happens is: - mail_plugins are unloaded and they unregister their hooks - doveadm plugins (e.g. doveadm_sieve) are NOT unloaded - mail_storage_deinit() frees all the registered hooks - next mail_storage_init() initializes all new hooks - All mail_plugins are loaded and they register again their hooks - doveadm plugins are NOT re-loaded or re-initialized, so their existing hooks were lost.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Sun, 19 Feb 2017 02:03:08 +0200
parents 1a2afcda9eb1
children 359be6775382
files src/doveadm/doveadm-mail.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c	Sun Feb 19 02:02:20 2017 +0200
+++ b/src/doveadm/doveadm-mail.c	Sun Feb 19 02:03:08 2017 +0200
@@ -921,11 +921,14 @@
 					doveadm_settings->mail_plugin_dir,
 					doveadm_settings->mail_plugins,
 					&mod_set);
+	/* keep mail_storage_init() referenced so that its _deinit() doesn't
+	   try to free doveadm plugins' hooks too early. */
+	mail_storage_init();
 }
 
 void doveadm_mail_deinit(void)
 {
-	mail_storage_hooks_deinit();
+	mail_storage_deinit();
 	array_free(&doveadm_mail_cmds);
 }