diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-15 15:22:33 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-15 16:24:15 +0100 |
commit | bedf3ff40869ab417aae52e36a2c4dc89772ae57 (patch) | |
tree | 03659ae153c38bf6f591c7999faa7f1bf1f34269 /src/libmime | |
parent | 94f36ba73ea4d91273245cff791493e5b17f6e2a (diff) | |
download | rspamd-bedf3ff40869ab417aae52e36a2c4dc89772ae57.tar.gz rspamd-bedf3ff40869ab417aae52e36a2c4dc89772ae57.zip |
[Minor] Store more information about symbols added
Diffstat (limited to 'src/libmime')
-rw-r--r-- | src/libmime/filter.c | 20 | ||||
-rw-r--r-- | src/libmime/filter.h | 4 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/libmime/filter.c b/src/libmime/filter.c index 7d7836d6f..d2b549251 100644 --- a/src/libmime/filter.c +++ b/src/libmime/filter.c @@ -54,13 +54,10 @@ rspamd_create_metric_result (struct rspamd_task *task) return metric_res; } - metric_res = rspamd_mempool_alloc (task->task_pool, + metric_res = rspamd_mempool_alloc0 (task->task_pool, sizeof (struct rspamd_metric_result)); metric_res->symbols = kh_init (rspamd_symbols_hash); metric_res->sym_groups = kh_init (rspamd_symbols_group_hash); - metric_res->grow_factor = 0; - metric_res->score = 0; - metric_res->passthrough_result = NULL; /* Optimize allocation */ kh_resize (rspamd_symbols_group_hash, metric_res->sym_groups, 4); @@ -364,9 +361,24 @@ insert_metric_result (struct rspamd_task *task, } if (!isnan (final_score)) { +#ifndef DBL_EPSILON +#define DBL_EPSILON 2.2204460492503131e-16 +#endif + const double epsilon = DBL_EPSILON; + metric_res->score += final_score; metric_res->grow_factor = next_gf; s->score = final_score; + + /* We ignore zero scored symbols */ + if (final_score > epsilon) { + metric_res->npositive ++; + metric_res->positive_score += final_score; + } + else if (final_score < epsilon) { + metric_res->nnegative ++; + metric_res->negative_score += fabs (final_score); + } } else { s->score = 0; diff --git a/src/libmime/filter.h b/src/libmime/filter.h index fdd0f8dc9..78d67e77c 100644 --- a/src/libmime/filter.h +++ b/src/libmime/filter.h @@ -77,6 +77,10 @@ struct rspamd_metric_result { double score; /**< total score */ double grow_factor; /**< current grow factor */ struct rspamd_passthrough_result *passthrough_result; + guint npositive; + guint nnegative; + double positive_score; + double negative_score; khash_t(rspamd_symbols_hash) *symbols; /**< symbols of metric */ khash_t(rspamd_symbols_group_hash) *sym_groups; /**< groups of symbols */ gdouble actions_limits[METRIC_ACTION_MAX]; /**< set of actions for this metric */ |