From 2b9b7d8523193a2639b1bd65a8b90edfe68e1e4c Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Wed, 5 Apr 2023 21:27:51 +0300 Subject: [PATCH] notify: Change notify_unregister() to zero the pointer, and ignore NULL --- src/plugins/mail-log/mail-log-plugin.c | 2 +- src/plugins/notify-status/notify-status-plugin.c | 3 +-- src/plugins/notify/notify-plugin.c | 8 +++++++- src/plugins/notify/notify-plugin.h | 2 +- src/plugins/push-notification/push-notification-plugin.c | 2 +- src/plugins/replication/replication-plugin.c | 2 +- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/plugins/mail-log/mail-log-plugin.c b/src/plugins/mail-log/mail-log-plugin.c index 58aff34ce5..824c81c1c2 100644 --- a/src/plugins/mail-log/mail-log-plugin.c +++ b/src/plugins/mail-log/mail-log-plugin.c @@ -544,7 +544,7 @@ void mail_log_plugin_init(struct module *module) void mail_log_plugin_deinit(void) { mail_storage_hooks_remove(&mail_log_mail_storage_hooks); - notify_unregister(mail_log_ctx); + notify_unregister(&mail_log_ctx); } const char *mail_log_plugin_dependencies[] = { "notify", NULL }; diff --git a/src/plugins/notify-status/notify-status-plugin.c b/src/plugins/notify-status/notify-status-plugin.c index 874fdee2fa..c537c3b703 100644 --- a/src/plugins/notify-status/notify-status-plugin.c +++ b/src/plugins/notify-status/notify-status-plugin.c @@ -295,8 +295,7 @@ static void notify_status_mail_user_deinit(struct mail_user *user) dict_wait(nuser->dict); dict_deinit(&nuser->dict); - if (nuser->context != NULL) - notify_unregister(nuser->context); + notify_unregister(&nuser->context); nuser->module_ctx.super.deinit(user); } diff --git a/src/plugins/notify/notify-plugin.c b/src/plugins/notify/notify-plugin.c index d7aec8c7e8..929dcbffbc 100644 --- a/src/plugins/notify/notify-plugin.c +++ b/src/plugins/notify/notify-plugin.c @@ -239,8 +239,14 @@ notify_register(const struct notify_vfuncs *v) return ctx; } -void notify_unregister(struct notify_context *ctx) +void notify_unregister(struct notify_context **_ctx) { + struct notify_context *ctx = *_ctx; + + if (ctx == NULL) + return; + *_ctx = NULL; + struct notify_mail_txn *mail_txn = ctx->mail_txn_list; for (; mail_txn != NULL; mail_txn = mail_txn->next) { diff --git a/src/plugins/notify/notify-plugin.h b/src/plugins/notify/notify-plugin.h index 3c95071f6b..f2a8f76391 100644 --- a/src/plugins/notify/notify-plugin.h +++ b/src/plugins/notify/notify-plugin.h @@ -35,7 +35,7 @@ struct notify_vfuncs { struct notify_context * notify_register(const struct notify_vfuncs *vfuncs); -void notify_unregister(struct notify_context *ctx); +void notify_unregister(struct notify_context **ctx); void notify_plugin_init(struct module *module); void notify_plugin_deinit(void); diff --git a/src/plugins/push-notification/push-notification-plugin.c b/src/plugins/push-notification/push-notification-plugin.c index 23c7e980df..75fcfc7f77 100644 --- a/src/plugins/push-notification/push-notification-plugin.c +++ b/src/plugins/push-notification/push-notification-plugin.c @@ -378,5 +378,5 @@ void push_notification_plugin_deinit(void) push_notification_event_unregister_rfc5423_events(); mail_storage_hooks_remove(&push_notification_storage_hooks); - notify_unregister(push_notification_ctx); + notify_unregister(&push_notification_ctx); } diff --git a/src/plugins/replication/replication-plugin.c b/src/plugins/replication/replication-plugin.c index ad55974cc6..e846e52fbc 100644 --- a/src/plugins/replication/replication-plugin.c +++ b/src/plugins/replication/replication-plugin.c @@ -419,7 +419,7 @@ void replication_plugin_deinit(void) i_free_and_null(fifo_path); mail_storage_hooks_remove(&replication_mail_storage_hooks); - notify_unregister(replication_ctx); + notify_unregister(&replication_ctx); } const char *replication_plugin_dependencies[] = { "notify", NULL }; -- 2.47.3