diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-11-13 18:28:57 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2020-11-13 18:28:57 +0000 |
commit | c7101e602f931f43b8f79a82f4616ba3b7ef3de9 (patch) | |
tree | d6b86c6d5011b48280013abff20798744503ec7c /src | |
parent | 0889381b971b2a18e867074986fc4a7f36e791a5 (diff) | |
download | rspamd-c7101e602f931f43b8f79a82f4616ba3b7ef3de9.tar.gz rspamd-c7101e602f931f43b8f79a82f4616ba3b7ef3de9.zip |
[Fix] Use message pointer to avoid obsolete data to be cached
Diffstat (limited to 'src')
-rw-r--r-- | src/lua/lua_common.h | 2 | ||||
-rw-r--r-- | src/lua/lua_task.c | 23 |
2 files changed, 10 insertions, 15 deletions
diff --git a/src/lua/lua_common.h b/src/lua/lua_common.h index 87caa6206..4c416fa0b 100644 --- a/src/lua/lua_common.h +++ b/src/lua/lua_common.h @@ -152,7 +152,7 @@ struct rspamd_lua_map { struct rspamd_lua_cached_entry { gint ref; - guchar id[4]; + guint id; }; /* Common utility functions */ diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 2bf833681..188a19671 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -1385,7 +1385,7 @@ lua_task_set_cached (lua_State *L, struct rspamd_task *task, const gchar *key, entry->ref = luaL_ref (L, LUA_REGISTRYINDEX); if (task->message) { - memcpy (entry->id, MESSAGE_FIELD (task, digest), sizeof (entry->id)); + entry->id = GPOINTER_TO_UINT (task->message); } } @@ -1399,8 +1399,7 @@ lua_task_get_cached (lua_State *L, struct rspamd_task *task, const gchar *key) entry = g_hash_table_lookup (task->lua_cache, key); if (entry != NULL && (task->message && - memcmp (entry->id, MESSAGE_FIELD (task, digest), - sizeof (entry->id)) == 0)) { + entry->id == GPOINTER_TO_UINT (task->message))) { lua_rawgeti (L, LUA_REGISTRYINDEX, entry->ref); return TRUE; @@ -2642,18 +2641,14 @@ lua_task_get_parts (lua_State * L) if (task != NULL) { if (task->message) { - if (!lua_task_get_cached (L, task, "mime_parts")) { - lua_createtable (L, MESSAGE_FIELD (task, parts)->len, 0); - - PTR_ARRAY_FOREACH (MESSAGE_FIELD (task, parts), i, part) { - ppart = lua_newuserdata (L, sizeof (struct rspamd_mime_part *)); - *ppart = part; - rspamd_lua_setclass (L, "rspamd{mimepart}", -1); - /* Make it array */ - lua_rawseti (L, -2, i + 1); - } + lua_createtable (L, MESSAGE_FIELD (task, parts)->len, 0); - lua_task_set_cached (L, task, "mime_parts", -1); + PTR_ARRAY_FOREACH (MESSAGE_FIELD (task, parts), i, part) { + ppart = lua_newuserdata (L, sizeof (struct rspamd_mime_part *)); + *ppart = part; + rspamd_lua_setclass (L, "rspamd{mimepart}", -1); + /* Make it array */ + lua_rawseti (L, -2, i + 1); } } else { |