Browse Source

[Project] Adjust some final bits

pull/4912/head
Vsevolod Stakhov 3 weeks ago
parent
commit
a96ff38346
No account linked to committer's email address
2 changed files with 17 additions and 9 deletions
  1. 13
    9
      src/libmime/scan_result.c
  2. 4
    0
      src/libserver/task.c

+ 13
- 9
src/libmime/scan_result.c View File

@@ -1088,20 +1088,21 @@ void rspamd_task_result_adjust_grow_factor(struct rspamd_task *task,
double final_grow_factor = grow_factor;
double max_limit = G_MINDOUBLE;

for (unsigned int i = 0; i < result->nactions; i++) {
struct rspamd_action_config *cur = &result->actions_config[i];

if (cur->cur_limit > 0 && max_limit < cur->cur_limit) {
max_limit = cur->cur_limit;
}
}

if (grow_factor > 1.0) {

for (unsigned int i = 0; i < result->nactions; i++) {
struct rspamd_action_config *cur = &result->actions_config[i];

if (cur->cur_limit > 0 && max_limit < cur->cur_limit) {
max_limit = cur->cur_limit;
}
}

/* Adjust factor by selecting all symbols and checking those with positive scores */
kh_foreach(result->symbols, kk, res, {
if (res->score > 0) {
double mult = 1.0 - grow_factor;
/* We adjust the factor by the ratio of the score to the max limit */
if (max_limit > 0 && !isnan(res->score)) {
mult *= res->score / max_limit;
final_grow_factor *= 1.0 + mult;
@@ -1109,12 +1110,15 @@ void rspamd_task_result_adjust_grow_factor(struct rspamd_task *task,
}
});

if (final_grow_factor > grow_factor) {
/* At this stage we know that we have some grow factor to apply */
if (final_grow_factor > 1.0) {
msg_info_task("calculated final grow factor for task: %.3f (%.2f the original one)",
final_grow_factor, grow_factor);
kh_foreach(result->symbols, kk, res, {
if (res->score > 0) {
result->score -= res->score;
res->score *= final_grow_factor;
result->score += res->score;
}
});
}

+ 4
- 0
src/libserver/task.c View File

@@ -758,6 +758,10 @@ rspamd_task_process(struct rspamd_task *task, unsigned int stages)
all_done = rspamd_symcache_process_symbols(task, task->cfg->cache,
st);

if (all_done) {
rspamd_task_result_adjust_grow_factor(task, task->result, task->cfg->grow_factor);
}

if (all_done && (task->flags & RSPAMD_TASK_FLAG_LEARN_AUTO) &&
!RSPAMD_TASK_IS_EMPTY(task) &&
!(task->flags & (RSPAMD_TASK_FLAG_LEARN_SPAM | RSPAMD_TASK_FLAG_LEARN_HAM))) {

Loading…
Cancel
Save