Mercurial > dovecot > core-2.2
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); }