@@ -1184,7 +1184,7 @@ rspamd_rcl_statfile_handler (rspamd_mempool_t *pool, const ucl_object_t *obj, | |||
st->symbol = rspamd_mempool_strdup (cfg->cfg_pool, key); | |||
if (rspamd_rcl_section_parse_defaults (cfg, section, pool, obj, st, err)) { | |||
ccf->statfiles = g_list_prepend (ccf->statfiles, st); | |||
ccf->statfiles = rspamd_mempool_glist_prepend (pool, ccf->statfiles, st); | |||
if (st->label != NULL) { | |||
labels = g_hash_table_lookup (ccf->labels, st->label); | |||
@@ -1196,6 +1196,7 @@ rspamd_rcl_statfile_handler (rspamd_mempool_t *pool, const ucl_object_t *obj, | |||
g_list_prepend (NULL, st)); | |||
} | |||
} | |||
if (st->symbol != NULL) { | |||
g_hash_table_insert (cfg->classifiers_symbols, st->symbol, st); | |||
} | |||
@@ -1392,7 +1393,10 @@ rspamd_rcl_classifier_handler (rspamd_mempool_t *pool, | |||
} | |||
ref_idx = luaL_ref (L, LUA_REGISTRYINDEX); | |||
ccf->learn_conditions = g_list_append (ccf->learn_conditions, | |||
rspamd_lua_add_ref_dtor (L, cfg->cfg_pool, ref_idx); | |||
ccf->learn_conditions = rspamd_mempool_glist_append ( | |||
cfg->cfg_pool, | |||
ccf->learn_conditions, | |||
GINT_TO_POINTER (ref_idx)); | |||
lua_settop (L, 0); | |||
} |
@@ -1020,7 +1020,13 @@ rspamd_resolve_addrs (const char *begin, size_t len, GPtrArray **addrs, | |||
hints.ai_flags = AI_NUMERICSERV|flags; | |||
if (len > 0) { | |||
addr_cpy = g_malloc (len + 1); | |||
if (pool) { | |||
addr_cpy = rspamd_mempool_alloc (pool, len + 1); | |||
} | |||
else { | |||
addr_cpy = g_malloc (len + 1); | |||
} | |||
rspamd_strlcpy (addr_cpy, begin, len + 1); | |||
} | |||
/* Otherwise it will be NULL */ |
@@ -379,6 +379,8 @@ rspamd_ast_add_node (GPtrArray *operands, struct rspamd_expression_elt *op, | |||
if (a1 == NULL) { | |||
g_set_error (err, rspamd_expr_quark(), EINVAL, "no operand to " | |||
"unary '%s' operation", rspamd_expr_op_to_str (op->p.op)); | |||
g_node_destroy (res); | |||
return FALSE; | |||
} | |||
@@ -1603,7 +1603,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg, | |||
g_ptr_array_add (map->backends, bk); | |||
if (!map->name) { | |||
map->name = g_strdup (ucl_object_tostring (cur)); | |||
map->name = rspamd_mempool_strdup (cfg->cfg_pool, | |||
ucl_object_tostring (cur)); | |||
} | |||
} | |||
} | |||
@@ -1621,16 +1622,14 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg, | |||
else if (ucl_object_type (obj) == UCL_OBJECT) { | |||
elt = ucl_object_lookup (obj, "name"); | |||
if (elt && ucl_object_type (elt) == UCL_STRING) { | |||
map->name = g_strdup (ucl_object_tostring (elt)); | |||
map->name = rspamd_mempool_strdup (cfg->cfg_pool, | |||
ucl_object_tostring (elt)); | |||
} | |||
elt = ucl_object_lookup (obj, "description"); | |||
if (elt && ucl_object_type (elt) == UCL_STRING) { | |||
if (map->description) { | |||
g_free (map->description); | |||
} | |||
map->description = g_strdup (ucl_object_tostring (elt)); | |||
map->description = rspamd_mempool_strdup (cfg->cfg_pool, | |||
ucl_object_tostring (elt)); | |||
} | |||
elt = ucl_object_lookup_any (obj, "timeout", "poll", "poll_time", | |||
@@ -1657,7 +1656,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg, | |||
g_ptr_array_add (map->backends, bk); | |||
if (!map->name) { | |||
map->name = g_strdup (ucl_object_tostring (cur)); | |||
map->name = rspamd_mempool_strdup (cfg->cfg_pool, | |||
ucl_object_tostring (cur)); | |||
} | |||
} | |||
} | |||
@@ -1683,7 +1683,8 @@ rspamd_map_add_from_ucl (struct rspamd_config *cfg, | |||
g_ptr_array_add (map->backends, bk); | |||
if (!map->name) { | |||
map->name = g_strdup (ucl_object_tostring (elt)); | |||
map->name = rspamd_mempool_strdup (cfg->cfg_pool, | |||
ucl_object_tostring (elt)); | |||
} | |||
} | |||
} |
@@ -381,6 +381,9 @@ lua_config_add_map (lua_State *L) | |||
&map_obj, &description, &cbidx, &type)) { | |||
ret = luaL_error (L, "invalid table arguments: %s", err->message); | |||
g_error_free (err); | |||
if (map_obj) { | |||
ucl_object_unref (map_obj); | |||
} | |||
return ret; | |||
} | |||
@@ -410,6 +413,10 @@ lua_config_add_map (lua_State *L) | |||
luaL_unref (L, LUA_REGISTRYINDEX, cbidx); | |||
} | |||
if (map_obj) { | |||
ucl_object_unref (map_obj); | |||
} | |||
lua_pushnil (L); | |||
return 1; |
@@ -237,7 +237,7 @@ parse_mime_types (const gchar *str) | |||
gchar **strvec, *p; | |||
gint num, i; | |||
struct fuzzy_mime_type *type; | |||
GPtrArray *res = g_ptr_array_new (); | |||
GPtrArray *res; | |||
strvec = g_strsplit_set (str, ",", 0); | |||
num = g_strv_length (strvec); |
@@ -642,7 +642,7 @@ spawn_workers (struct rspamd_main *rspamd_main, struct event_base *ev_base) | |||
} | |||
} | |||
g_ptr_array_free (seen_mandatory_workers); | |||
g_ptr_array_free (seen_mandatory_workers, TRUE); | |||
} | |||
static void | |||
@@ -1417,6 +1417,7 @@ main (gint argc, gchar **argv, gchar **env) | |||
REF_RELEASE (rspamd_main->cfg); | |||
g_hash_table_unref (rspamd_main->spairs); | |||
rspamd_mempool_delete (rspamd_main->server_pool); | |||
rspamd_pidfile_close (rspamd_main->pfh); | |||
g_free (rspamd_main); | |||
event_base_free (ev_base); | |||