diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-06 15:08:48 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-01-06 15:08:48 +0000 |
commit | 96d887fb8e167278e5406f91882ac262355c9ebe (patch) | |
tree | 8ddd59634e116ced4229d5a217679034436195dc /src/libserver/task.c | |
parent | df9ada40a53a804d2d90d9dfddc149a68c141a15 (diff) | |
download | rspamd-96d887fb8e167278e5406f91882ac262355c9ebe.tar.gz rspamd-96d887fb8e167278e5406f91882ac262355c9ebe.zip |
Fix learning.
Diffstat (limited to 'src/libserver/task.c')
-rw-r--r-- | src/libserver/task.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/libserver/task.c b/src/libserver/task.c index 579cc3461..91ed48e86 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -457,6 +457,21 @@ rspamd_task_process (struct rspamd_task *task, guint stages) rspamd_lua_call_post_filters (task); break; + case RSPAMD_TASK_STAGE_LEARN: + case RSPAMD_TASK_STAGE_LEARN_PRE: + case RSPAMD_TASK_STAGE_LEARN_POST: + if (task->flags & (RSPAMD_TASK_FLAG_LEARN_SPAM|RSPAMD_TASK_FLAG_LEARN_HAM)) { + if (!rspamd_stat_learn (task, + task->flags & RSPAMD_TASK_FLAG_LEARN_SPAM, + task->cfg->lua_state, task->classifier, + st, &stat_error)) { + msg_err_task ("learn error: %e", stat_error); + task->err = stat_error; + task->processed_stages |= RSPAMD_TASK_STAGE_DONE; + } + } + break; + case RSPAMD_TASK_STAGE_DONE: task->processed_stages |= RSPAMD_TASK_STAGE_DONE; break; @@ -610,7 +625,16 @@ rspamd_learn_task_spam (struct rspamd_task *task, const gchar *classifier, GError **err) { - return FALSE; + if (is_spam) { + task->flags |= RSPAMD_TASK_FLAG_LEARN_SPAM; + } + else { + task->flags |= RSPAMD_TASK_FLAG_LEARN_HAM; + } + + task->classifier = classifier; + + return TRUE; } static gboolean |