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);
g_list_prepend (NULL, st));
}
}
+
if (st->symbol != NULL) {
g_hash_table_insert (cfg->classifiers_symbols, st->symbol, st);
}
}
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);
}
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 */
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;
}
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));
}
}
}
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",
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));
}
}
}
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));
}
}
}
&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;
}
luaL_unref (L, LUA_REGISTRYINDEX, cbidx);
}
+ if (map_obj) {
+ ucl_object_unref (map_obj);
+ }
+
lua_pushnil (L);
return 1;
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);
}
}
- g_ptr_array_free (seen_mandatory_workers);
+ g_ptr_array_free (seen_mandatory_workers, TRUE);
}
static void
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);