From: Aki Tuomi Date: Tue, 25 Sep 2018 09:24:02 +0000 (+0300) Subject: mail-lua: Add deinit_pre function X-Git-Tag: 2.3.4~56 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0603d14775505b8d76ca2da1bfb2071256005b09;p=thirdparty%2Fdovecot%2Fcore.git mail-lua: Add deinit_pre function --- 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;