]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Improve functions pcall invocations
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 20 May 2020 19:51:28 +0000 (20:51 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 20 May 2020 19:51:28 +0000 (20:51 +0100)
src/lua/lua_map.c
src/lua/lua_redis.c

index a5defd011a4beda95e1213b98259ee2f1217fc02..25e7bdc92102b1a2a457f172bfa359bc26136816 100644 (file)
@@ -442,6 +442,10 @@ lua_map_fin (struct map_cb_data *data, void **target)
                msg_err_map ("map has no callback set");
        }
        else if (cbdata->data != NULL && cbdata->data->len != 0) {
+
+               lua_pushcfunction (cbdata->L, &rspamd_lua_traceback);
+               int err_idx = lua_gettop (cbdata->L);
+
                lua_rawgeti (cbdata->L, LUA_REGISTRYINDEX, cbdata->ref);
 
                if (!cbdata->opaque) {
@@ -461,11 +465,15 @@ lua_map_fin (struct map_cb_data *data, void **target)
                *pmap = cbdata->lua_map;
                rspamd_lua_setclass (cbdata->L, "rspamd{map}", -1);
 
-               if (lua_pcall (cbdata->L, 2, 0, 0) != 0) {
-                       msg_info_map ("call to %s failed: %s", "local function",
+               gint ret = lua_pcall (cbdata->L, 2, 0, err_idx);
+
+               if (ret != 0) {
+                       msg_info_map ("call to %s failed (%d): %s", "map fin function",
+                               ret,
                                lua_tostring (cbdata->L, -1));
-                       lua_pop (cbdata->L, 1);
                }
+
+               lua_settop (cbdata->L, err_idx - 1);
        }
 
        cbdata->data = rspamd_fstring_assign (cbdata->data, "", 0);
index 492c639067140f0bca4c344ff59406800a9ccaf7..ab76c3114fa836b7805a1782733be4c12b723a99 100644 (file)
@@ -405,8 +405,11 @@ lua_redis_push_data (const redisReply *r, struct lua_redis_ctx *ctx,
                                rspamd_symcache_set_cur_item (ud->task, ud->item);
                        }
 
-                       if (lua_pcall (cbs.L, 2, 0, err_idx) != 0) {
-                               msg_info ("call to callback failed: %s", lua_tostring (cbs.L, -1));
+                       gint ret = lua_pcall (cbs.L, 2, 0, err_idx);
+
+                       if (ret != 0) {
+                               msg_info ("call to lua_redis callback failed (%d): %s",
+                                               ret, lua_tostring (cbs.L, -1));
                        }
 
                        lua_settop (L, err_idx - 1);