@@ -419,3 +419,36 @@ rspamd_check_action_metric (struct rspamd_task *task, struct rspamd_metric_resul | |||
return METRIC_ACTION_NOACTION; | |||
} | |||
struct rspamd_symbol_result* | |||
rspamd_task_find_symbol_result (struct rspamd_task *task, const char *sym) | |||
{ | |||
struct rspamd_symbol_result *res = NULL; | |||
khiter_t k; | |||
if (task->result) { | |||
k = kh_get (rspamd_symbols_hash, task->result->symbols, sym); | |||
if (k != kh_end (task->result->symbols)) { | |||
res = &kh_value (task->result->symbols, k); | |||
} | |||
} | |||
return res; | |||
} | |||
void | |||
rspamd_task_symbol_result_foreach (struct rspamd_task *task, | |||
GHFunc func, | |||
gpointer ud) | |||
{ | |||
const gchar *kk; | |||
struct rspamd_symbol_result res; | |||
if (func && task->result) { | |||
kh_foreach (task->result->symbols, kk, res, { | |||
func ((gpointer)kk, (gpointer)&res, ud); | |||
}); | |||
} | |||
} |
@@ -104,6 +104,25 @@ struct rspamd_symbol_result* rspamd_task_insert_result_full (struct rspamd_task | |||
gboolean rspamd_task_add_result_option (struct rspamd_task *task, | |||
struct rspamd_symbol_result *s, const gchar *opt); | |||
/** | |||
* Finds symbol result | |||
* @param task | |||
* @param sym | |||
* @return | |||
*/ | |||
struct rspamd_symbol_result* rspamd_task_find_symbol_result ( | |||
struct rspamd_task *task, const char *sym); | |||
/** | |||
* Compatibility function to iterate on symbols hash | |||
* @param task | |||
* @param func | |||
* @param ud | |||
*/ | |||
void rspamd_task_symbol_result_foreach (struct rspamd_task *task, | |||
GHFunc func, | |||
gpointer ud); | |||
/** | |||
* Default consolidation function for metric, it get all symbols and multiply symbol | |||
* weight by some factor that is specified in config. Default factor is 1. |