diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-10-17 15:26:10 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-10-17 15:26:10 +0100 |
commit | 9ecc5ea5e15a44f830aff1e1b1ad92b683bca53a (patch) | |
tree | 235a52956c6198e2891ca77374c0f595c00ef8f6 | |
parent | 654bbfecc18b0a6161036b8a91644d1fe345b091 (diff) | |
download | rspamd-9ecc5ea5e15a44f830aff1e1b1ad92b683bca53a.tar.gz rspamd-9ecc5ea5e15a44f830aff1e1b1ad92b683bca53a.zip |
[Rework] Remove outdated and unused lua_session module
-rw-r--r-- | src/lua/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/lua/lua_session.c | 346 |
2 files changed, 0 insertions, 347 deletions
diff --git a/src/lua/CMakeLists.txt b/src/lua/CMakeLists.txt index fefd074d5..eda9acbc2 100644 --- a/src/lua/CMakeLists.txt +++ b/src/lua/CMakeLists.txt @@ -12,7 +12,6 @@ SET(LUASRC ${CMAKE_CURRENT_SOURCE_DIR}/lua_common.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_redis.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_upstream.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_mempool.c - ${CMAKE_CURRENT_SOURCE_DIR}/lua_session.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_buffer.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_dns.c ${CMAKE_CURRENT_SOURCE_DIR}/lua_rsa.c diff --git a/src/lua/lua_session.c b/src/lua/lua_session.c deleted file mode 100644 index f4bd49c7e..000000000 --- a/src/lua/lua_session.c +++ /dev/null @@ -1,346 +0,0 @@ -/*- - * Copyright 2016 Vsevolod Stakhov - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "lua_common.h" - -struct lua_session_udata { - lua_State *L; - gint cbref_fin; - gint cbref_restore; - gint cbref_cleanup; - rspamd_mempool_t *pool; - struct rspamd_async_session *session; -}; - -struct lua_event_udata { - lua_State *L; - gint cbref; - struct rspamd_async_session *session; -}; - -/* Public prototypes */ -struct lua_session_udata * lua_check_session (lua_State * L); -void luaopen_session (lua_State * L); - -/* Lua bindings */ -LUA_FUNCTION_DEF (session, register_async_event); -LUA_FUNCTION_DEF (session, remove_normal_event); -LUA_FUNCTION_DEF (session, check_session_pending); -LUA_FUNCTION_DEF (session, create); -LUA_FUNCTION_DEF (session, delete); - -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), - LUA_INTERFACE_DEF (session, delete), - {"__tostring", rspamd_lua_class_tostring}, - {NULL, NULL} -}; - -static const struct luaL_reg sessionlib_f[] = { - LUA_INTERFACE_DEF (session, create), - {NULL, NULL} -}; - -static const struct luaL_reg eventlib_m[] = { - {"__tostring", rspamd_lua_class_tostring}, - {NULL, NULL} -}; - -struct lua_session_udata * -lua_check_session (lua_State * L) -{ - void *ud = rspamd_lua_check_udata (L, 1, "rspamd{session}"); - luaL_argcheck (L, ud != NULL, 1, "'session' expected"); - return ud ? *((struct lua_session_udata **)ud) : NULL; -} - -struct rspamd_async_event * -lua_check_event (lua_State * L, gint pos) -{ - void *ud = rspamd_lua_check_udata (L, pos, "rspamd{event}"); - luaL_argcheck (L, ud != NULL, 1, "'event' expected"); - return ud ? *((struct rspamd_async_event **)ud) : NULL; -} - -/* Usage: rspamd_session.create(pool, finalizer, restore, cleanup) */ - -static gboolean -lua_session_finalizer (gpointer ud) -{ - struct lua_session_udata *cbdata = ud; - gboolean res = FALSE; - - /* Call finalizer function */ - lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_fin); - if (lua_pcall (cbdata->L, 0, 1, 0) != 0) { - msg_info ("call to session finalizer failed: %s", - lua_tostring (cbdata->L, -1)); - lua_pop (cbdata->L, 1); - } - else { - res = lua_toboolean (cbdata->L, -1); - lua_pop (cbdata->L, 1); - } - - luaL_unref (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_fin); - - - return res; -} - -static void -lua_session_restore (gpointer ud) -{ - struct lua_session_udata *cbdata = ud; - - if (cbdata->cbref_restore) { - - /* Call restorer function */ - lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_restore); - if (lua_pcall (cbdata->L, 0, 0, 0) != 0) { - msg_info ("call to session restorer failed: %s", - lua_tostring (cbdata->L, -1)); - lua_pop (cbdata->L, 1); - } - luaL_unref (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_restore); - } -} - -static void -lua_session_cleanup (gpointer ud) -{ - struct lua_session_udata *cbdata = ud; - - if (cbdata->cbref_cleanup) { - - /* Call restorer function */ - lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_cleanup); - if (lua_pcall (cbdata->L, 0, 0, 0) != 0) { - msg_info ("call to session cleanup failed: %s", - lua_tostring (cbdata->L, -1)); - lua_pop (cbdata->L, 1); - } - luaL_unref (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref_cleanup); - } -} - - - -static int -lua_session_create (lua_State *L) -{ - struct rspamd_async_session *session; - struct lua_session_udata *cbdata, **pdata; - rspamd_mempool_t *mempool; - - if (lua_gettop (L) < 2 || lua_gettop (L) > 4) { - msg_err ("invalid arguments number to rspamd_session.create"); - lua_pushnil (L); - return 1; - } - - mempool = rspamd_lua_check_mempool (L, 1); - if (mempool == NULL) { - msg_err ("invalid mempool argument to rspamd_session.create"); - lua_pushnil (L); - return 1; - } - - if (!lua_isfunction (L, 2)) { - msg_err ("invalid finalizer argument to rspamd_session.create"); - lua_pushnil (L); - return 1; - } - - cbdata = rspamd_mempool_alloc0 (mempool, sizeof (struct lua_session_udata)); - cbdata->L = L; - cbdata->pool = mempool; - lua_pushvalue (L, 2); - cbdata->cbref_fin = luaL_ref (L, LUA_REGISTRYINDEX); - - if (lua_gettop (L) > 2) { - /* Also add restore callback */ - if (lua_isfunction (L, 3)) { - lua_pushvalue (L, 3); - cbdata->cbref_restore = luaL_ref (L, LUA_REGISTRYINDEX); - } - } - - if (lua_gettop (L) > 3) { - /* Also add cleanup callback */ - if (lua_isfunction (L, 4)) { - lua_pushvalue (L, 4); - cbdata->cbref_cleanup = luaL_ref (L, LUA_REGISTRYINDEX); - } - } - - session = rspamd_session_create (mempool, - lua_session_finalizer, - lua_session_restore, - lua_session_cleanup, - cbdata); - cbdata->session = session; - pdata = lua_newuserdata (L, sizeof (struct rspamd_async_session *)); - rspamd_lua_setclass (L, "rspamd{session}", -1); - *pdata = cbdata; - - return 1; -} - -static int -lua_session_delete (lua_State *L) -{ - struct lua_session_udata *cbd = lua_check_session (L); - struct rspamd_async_session *session; - - session = cbd->session; - if (session) { - rspamd_session_destroy (session); - return 0; - } - else { - lua_pushnil (L); - } - - return 1; -} - -static void -lua_event_fin (gpointer ud) -{ - struct lua_event_udata *cbdata = ud; - - if (cbdata->cbref) { - /* Call restorer function */ - lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref); - if (lua_pcall (cbdata->L, 0, 0, 0) != 0) { - msg_info ("call to event finalizer failed: %s", - lua_tostring (cbdata->L, -1)); - lua_pop (cbdata->L, 1); - } - luaL_unref (cbdata->L, LUA_REGISTRYINDEX, cbdata->cbref); - } -} - -static int -lua_session_register_async_event (lua_State *L) -{ - struct lua_session_udata *cbd = lua_check_session (L); - struct rspamd_async_session *session; - struct lua_event_udata *cbdata; - gpointer *pdata; - - session = cbd->session; - - if (session) { - if (lua_isfunction (L, 1)) { - cbdata = - rspamd_mempool_alloc (cbd->pool, - sizeof (struct lua_event_udata)); - cbdata->L = L; - lua_pushvalue (L, 1); - cbdata->cbref = luaL_ref (L, LUA_REGISTRYINDEX); - cbdata->session = session; - rspamd_session_add_event (session, - lua_event_fin, - cbdata, - g_quark_from_static_string ("lua event")); - pdata = lua_newuserdata (L, sizeof (gpointer)); - rspamd_lua_setclass (L, "rspamd{event}", -1); - *pdata = cbdata; - } - else { - msg_err ("invalid finalizer argument to register async event"); - } - } - lua_pushnil (L); - - return 1; -} - -static int -lua_session_remove_normal_event (lua_State *L) -{ - struct lua_session_udata *cbd = lua_check_session (L); - struct rspamd_async_session *session; - gpointer data; - - session = cbd->session; - - if (session) { - data = lua_check_event (L, 2); - if (data) { - rspamd_session_remove_event (session, lua_event_fin, data); - return 0; - } - } - else { - lua_pushnil (L); - } - - return 1; -} - -static int -lua_session_check_session_pending (lua_State *L) -{ - struct lua_session_udata *cbd = lua_check_session (L); - struct rspamd_async_session *session; - - session = cbd->session; - - if (session) { - - } - else { - lua_pushnil (L); - } - - return 1; -} - -static gint -lua_load_session (lua_State * L) -{ - lua_newtable (L); - luaL_register (L, NULL, sessionlib_f); - - return 1; -} - -void -luaopen_session (lua_State * L) -{ - luaL_newmetatable (L, "rspamd{session}"); - lua_pushstring (L, "__index"); - lua_pushvalue (L, -2); - lua_settable (L, -3); - - lua_pushstring (L, "class"); - lua_pushstring (L, "rspamd{session}"); - lua_rawset (L, -3); - - luaL_register (L, NULL, sessionlib_m); - rspamd_lua_add_preload (L, "rspamd_session", lua_load_session); - - lua_pop (L, 1); - - /* Simple event class */ - rspamd_lua_new_class (L, "rspamd{event}", eventlib_m); - - lua_pop (L, 1); -} |