#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)
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);
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;