Mercurial > dovecot > core-2.2
changeset 19605:d80976d7fec0
doveadm: Make sure all mail storage hooks are freed at deinit.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 22 Jan 2016 16:48:53 +0200 |
parents | c996bc091c6b |
children | 487036a4b545 |
files | src/doveadm/doveadm-mail.c src/lib-storage/mail-storage-hooks.c |
diffstat | 2 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-mail.c Mon Jan 18 15:50:23 2016 +0200 +++ b/src/doveadm/doveadm-mail.c Fri Jan 22 16:48:53 2016 +0200 @@ -17,6 +17,7 @@ #include "mail-storage.h" #include "mail-storage-settings.h" #include "mail-storage-service.h" +#include "mail-storage-hooks.h" #include "mail-search-build.h" #include "mail-search-parser.h" #include "mailbox-list-iter.h" @@ -843,5 +844,6 @@ void doveadm_mail_deinit(void) { + mail_storage_hooks_deinit(); array_free(&doveadm_mail_cmds); }
--- a/src/lib-storage/mail-storage-hooks.c Mon Jan 18 15:50:23 2016 +0200 +++ b/src/lib-storage/mail-storage-hooks.c Fri Jan 22 16:48:53 2016 +0200 @@ -49,8 +49,14 @@ void mail_storage_hooks_deinit(void) { - array_free(&internal_hooks); - array_free(&module_hooks); + /* allow calling this even if mail_storage_hooks_init() hasn't been + called, because e.g. doveadm plugins could call + mail_storage_hooks_add() even though mail storage is never + initialized. */ + if (array_is_created(&internal_hooks)) + array_free(&internal_hooks); + if (array_is_created(&module_hooks)) + array_free(&module_hooks); } void mail_storage_hooks_add(struct module *module,