static void insert_result_common (struct rspamd_task *task, const gchar *symbol, double flag, GList * opts, gboolean single) { struct metric *metric; GList *cur, *metric_list; /* Avoid concurrenting inserting of results */ #if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION <= 30)) g_static_mutex_lock (&result_mtx); #else G_LOCK (result_mtx); #endif metric_list = g_hash_table_lookup (task->cfg->metrics_symbols, symbol); if (metric_list) { cur = metric_list; while (cur) { metric = cur->data; insert_metric_result (task, metric, symbol, flag, opts, single); cur = g_list_next (cur); } } else { /* Insert symbol to default metric */ insert_metric_result (task, task->cfg->default_metric, symbol, flag, opts, single); } /* Process cache item */ if (task->cfg->cache) { rspamd_symbols_cache_inc_frequency (task->cfg->cache, symbol); } if (opts != NULL) { /* XXX: it is not wise to destroy them here */ g_list_free (opts); } #if ((GLIB_MAJOR_VERSION == 2) && (GLIB_MINOR_VERSION <= 30)) g_static_mutex_unlock (&result_mtx); #else G_UNLOCK (result_mtx); #endif }
static void insert_result_common (struct rspamd_task *task, const gchar *symbol, double flag, GList * opts, gboolean single) { struct metric *metric; GList *cur, *metric_list; metric_list = g_hash_table_lookup (task->cfg->metrics_symbols, symbol); if (metric_list) { cur = metric_list; while (cur) { metric = cur->data; insert_metric_result (task, metric, symbol, flag, opts, single); cur = g_list_next (cur); } } else { /* Insert symbol to default metric */ insert_metric_result (task, task->cfg->default_metric, symbol, flag, opts, single); } /* Process cache item */ if (task->cfg->cache) { rspamd_symbols_cache_inc_frequency (task->cfg->cache, symbol); } if (opts != NULL) { /* XXX: it is not wise to destroy them here */ g_list_free (opts); } }
static struct rspamd_symbol_result * insert_result_common (struct rspamd_task *task, const gchar *symbol, double flag, const gchar *opt, gboolean single) { struct rspamd_metric *metric; GList *cur, *metric_list; struct rspamd_symbol_result *s = NULL; metric_list = g_hash_table_lookup (task->cfg->metrics_symbols, symbol); if (metric_list) { cur = metric_list; while (cur) { metric = cur->data; s = insert_metric_result (task, metric, symbol, flag, opt, single); cur = g_list_next (cur); } } else { /* Insert symbol to default metric */ s = insert_metric_result (task, task->cfg->default_metric, symbol, flag, opt, single); } /* Process cache item */ if (task->cfg->cache) { rspamd_symbols_cache_inc_frequency (task->cfg->cache, symbol); } return s; }