aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua/lua_session.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2012-08-13 20:40:50 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2012-08-13 20:40:50 +0400
commitcd85daafe383de85701d726461e3e464f7f70249 (patch)
tree5216e42fc3ae75d08ac653870b3e82f7f482ea6c /src/lua/lua_session.c
parentac13c4d304d190ead195f12a2db74ae08a91ed6b (diff)
downloadrspamd-cd85daafe383de85701d726461e3e464f7f70249.tar.gz
rspamd-cd85daafe383de85701d726461e3e464f7f70249.zip
* Add DNS resolver lua bindings.
Make lua http library working without task object. Fix a problem with resolver in lua_worker. Added some utility functions to lua api.
Diffstat (limited to 'src/lua/lua_session.c')
-rw-r--r--src/lua/lua_session.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lua/lua_session.c b/src/lua/lua_session.c
index 9f4af2882..a25363430 100644
--- a/src/lua/lua_session.c
+++ b/src/lua/lua_session.c
@@ -38,7 +38,7 @@ static const struct luaL_reg sessionlib_m[] = {
LUA_INTERFACE_DEF (session, register_async_event),
LUA_INTERFACE_DEF (session, remove_normal_event),
LUA_INTERFACE_DEF (session, check_session_pending),
- {"__gc", lua_session_delete},
+ LUA_INTERFACE_DEF (session, delete),
{"__tostring", lua_class_tostring},
{NULL, NULL}
};
@@ -89,7 +89,7 @@ static gboolean
lua_session_finalizer (gpointer ud)
{
struct lua_session_udata *cbdata = ud;
- gboolean need_unlock = FALSE;
+ gboolean need_unlock = FALSE, res;
/* Avoid LOR here as mutex can be acquired before in lua_call */
if (g_mutex_trylock (lua_mtx)) {
@@ -98,15 +98,17 @@ lua_session_finalizer (gpointer ud)
/* Call finalizer function */
lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_fin);
- if (lua_pcall (cbdata->L, 0, 0, 0) != 0) {
+ if (lua_pcall (cbdata->L, 0, 1, 0) != 0) {
msg_info ("call to session finalizer failed: %s", lua_tostring (cbdata->L, -1));
}
+ res = lua_toboolean (cbdata->L, -1);
+ lua_pop (cbdata->L, 1);
luaL_unref (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_fin);
if (need_unlock) {
g_mutex_unlock (lua_mtx);
}
- return TRUE;
+ return res;
}
static void