From 0603d14775505b8d76ca2da1bfb2071256005b09 Mon Sep 17 00:00:00 2001 From: Aki Tuomi Date: Tue, 25 Sep 2018 12:24:02 +0300 Subject: [PATCH] mail-lua: Add deinit_pre function --- src/plugins/mail-lua/mail-lua-plugin.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/plugins/mail-lua/mail-lua-plugin.c b/src/plugins/mail-lua/mail-lua-plugin.c index 8ed8688111..a555aa5966 100644 --- a/src/plugins/mail-lua/mail-lua-plugin.c +++ b/src/plugins/mail-lua/mail-lua-plugin.c @@ -11,6 +11,7 @@ #define MAIL_LUA_SCRIPT "mail_lua_script" #define MAIL_LUA_USER_CREATED_FN "mail_user_created" #define MAIL_LUA_USER_DEINIT_FN "mail_user_deinit" +#define MAIL_LUA_USER_DEINIT_PRE_FN "mail_user_deinit_pre" #define MAIL_LUA_USER_CONTEXT(obj) \ MODULE_CONTEXT(obj, mail_lua_user_module) @@ -57,6 +58,23 @@ static int mail_lua_call_hook(struct dlua_script *script, return ret < 0 ? -1 : 1; } +static void mail_lua_user_deinit_pre(struct mail_user *user) +{ + struct mail_lua_user_context *luser = MAIL_LUA_USER_CONTEXT(user); + const char *error; + int ret; + + if (luser == NULL) + return; + + if ((ret = mail_lua_call_hook(luser->script, user, MAIL_LUA_USER_DEINIT_PRE_FN, + &error)) < 0) { + e_error(user->event, "mail-lua: %s", error); + } + + luser->module_ctx.super.deinit_pre(user); +} + static void mail_lua_user_deinit(struct mail_user *user) { struct mail_lua_user_context *luser = MAIL_LUA_USER_CONTEXT(user); @@ -116,6 +134,7 @@ static void mail_lua_user_created(struct mail_user *user) luser = p_new(user->pool, struct mail_lua_user_context, 1); luser->module_ctx.super = *v; + v->deinit_pre = mail_lua_user_deinit_pre; v->deinit = mail_lua_user_deinit; luser->script = script; user->vlast = &luser->module_ctx.super; -- 2.47.3