diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-08-13 20:40:50 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-08-13 20:40:50 +0400 |
commit | cd85daafe383de85701d726461e3e464f7f70249 (patch) | |
tree | 5216e42fc3ae75d08ac653870b3e82f7f482ea6c /src/lua/lua_session.c | |
parent | ac13c4d304d190ead195f12a2db74ae08a91ed6b (diff) | |
download | rspamd-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.c | 10 |
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 |