summaryrefslogtreecommitdiffstats
path: root/src/libserver/task.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-01-06 15:08:48 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-01-06 15:08:48 +0000
commit96d887fb8e167278e5406f91882ac262355c9ebe (patch)
tree8ddd59634e116ced4229d5a217679034436195dc /src/libserver/task.c
parentdf9ada40a53a804d2d90d9dfddc149a68c141a15 (diff)
downloadrspamd-96d887fb8e167278e5406f91882ac262355c9ebe.tar.gz
rspamd-96d887fb8e167278e5406f91882ac262355c9ebe.zip
Fix learning.
Diffstat (limited to 'src/libserver/task.c')
-rw-r--r--src/libserver/task.c26
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