From: Timo Sirainen Date: Wed, 5 Apr 2023 18:27:51 +0000 (+0300) Subject: notify: Change notify_unregister() to zero the pointer, and ignore NULL X-Git-Tag: 2.4.0~2812 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2b9b7d8523193a2639b1bd65a8b90edfe68e1e4c;p=thirdparty%2Fdovecot%2Fcore.git notify: Change notify_unregister() to zero the pointer, and ignore NULL --- 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 };