Browse Source

[Feature] Store actions limits in metric result

tags/1.2.2
Vsevolod Stakhov 8 years ago
parent
commit
365d60218d
5 changed files with 12 additions and 8 deletions
  1. 6
    1
      src/libmime/filter.c
  2. 2
    3
      src/libmime/filter.h
  3. 2
    2
      src/libserver/protocol.c
  4. 1
    1
      src/libserver/task.c
  5. 1
    1
      src/libstat/stat_process.c

+ 6
- 1
src/libmime/filter.c View File

@@ -29,6 +29,7 @@ rspamd_create_metric_result (struct rspamd_task *task, const gchar *name)
{
struct metric_result *metric_res;
struct metric *metric;
guint i;

metric_res = g_hash_table_lookup (task->results, name);

@@ -53,12 +54,16 @@ rspamd_create_metric_result (struct rspamd_task *task, const gchar *name)
rspamd_mempool_add_destructor (task->task_pool,
(rspamd_mempool_destruct_t) g_hash_table_unref,
metric_res->sym_groups);
metric_res->checked = FALSE;
metric_res->metric = metric;
metric_res->grow_factor = 0;
metric_res->score = 0;
g_hash_table_insert (task->results, (gpointer) metric->name,
metric_res);

for (i = 0; i < METRIC_ACTION_MAX; i++) {
metric_res->actions_limits[i] = metric->actions[i].score;
}

metric_res->action = METRIC_ACTION_MAX;

return metric_res;

+ 2
- 3
src/libmime/filter.h View File

@@ -30,12 +30,11 @@ struct symbol {
struct metric_result {
struct metric *metric; /**< pointer to metric structure */
double score; /**< total score */
double required_score; /**< real required score */
double grow_factor; /**< current grow factor */
GHashTable *symbols; /**< symbols of metric */
GHashTable *sym_groups; /**< groups of symbols */
gboolean checked; /**< whether metric result is consolidated */
enum rspamd_metric_action action; /**< the current action */
gdouble actions_limits[METRIC_ACTION_MAX]; /**< set of actions for this metric */
enum rspamd_metric_action action; /**< the current action */
};

/**

+ 2
- 2
src/libserver/protocol.c View File

@@ -802,7 +802,7 @@ rspamd_metric_result_ucl (struct rspamd_task *task,

m = mres->metric;
mres->action = rspamd_check_action_metric (task, mres->score,
&mres->required_score, m);
&mres->actions_limits[METRIC_ACTION_REJECT], m);

action = mres->action;
is_spam = (action < METRIC_ACTION_GREYLIST);
@@ -814,7 +814,7 @@ rspamd_metric_result_ucl (struct rspamd_task *task,
"is_skipped", 0, false);
ucl_object_insert_key (obj, ucl_object_fromdouble (mres->score),
"score", 0, false);
ucl_object_insert_key (obj, ucl_object_fromdouble (mres->required_score),
ucl_object_insert_key (obj, ucl_object_fromdouble (mres->actions_limits[METRIC_ACTION_REJECT]),
"required_score", 0, false);
ucl_object_insert_key (obj,
ucl_object_fromstring (rspamd_action_to_str (action)),

+ 1
- 1
src/libserver/task.c View File

@@ -821,7 +821,7 @@ rspamd_task_log_metric_res (struct rspamd_task *task,
break;
case RSPAMD_LOG_SCORES:
res.len = rspamd_snprintf (scorebuf, sizeof (scorebuf), "%.2f/%.2f",
mres->score, mres->required_score);
mres->score, mres->actions_limits[METRIC_ACTION_REJECT]);
res.begin = scorebuf;
break;
case RSPAMD_LOG_SYMBOLS:

+ 1
- 1
src/libstat/stat_process.c View File

@@ -735,7 +735,7 @@ rspamd_stat_check_autolearn (struct rspamd_task *task)
if (mres) {
mres->action = rspamd_check_action_metric (task,
mres->score,
&mres->required_score,
&mres->actions_limits[METRIC_ACTION_REJECT],
mres->metric);

if (mres->action == METRIC_ACTION_REJECT) {

Loading…
Cancel
Save