Browse Source

[Feature] Allow to store strings in radix maps

tags/1.3.1
Vsevolod Stakhov 7 years ago
parent
commit
90d7f1dbbd
1 changed files with 19 additions and 4 deletions
  1. 19
    4
      src/lua/lua_map.c

+ 19
- 4
src/lua/lua_map.c View File

@@ -412,7 +412,7 @@ lua_config_add_map (lua_State *L)
return 1;
}
}
else if (strcmp (type, "map") == 0) {
else if (strcmp (type, "map") == 0 || strcmp (type, "hash") == 0) {
map = rspamd_mempool_alloc0 (cfg->cfg_pool, sizeof (*map));
map->data.hash = g_hash_table_new (rspamd_strcase_hash,
rspamd_strcase_equal);
@@ -537,18 +537,33 @@ lua_map_get_key (lua_State * L)
}

if (radix) {
guintptr p = 0;

if (addr != NULL) {
if (radix_find_compressed_addr (radix, addr->addr)
if ((p = radix_find_compressed_addr (radix, addr->addr))
!= RADIX_NO_VALUE) {
ret = TRUE;
}
else {
p = 0;
}
}
else if (key_num != 0) {
if (radix_find_compressed (radix, (guint8 *)&key_num, sizeof (key_num))
!= RADIX_NO_VALUE) {
if ((p = radix_find_compressed (radix,
(guint8 *)&key_num, sizeof (key_num))) != RADIX_NO_VALUE) {
ret = TRUE;
}
else {
p = 0;
}
}

value = (const char *)p;
}

if (ret) {
lua_pushstring (L, value);
return 1;
}
}
else if (map->type == RSPAMD_LUA_MAP_SET) {

Loading…
Cancel
Save