From: Vsevolod Stakhov Date: Sat, 30 Apr 2016 14:44:45 +0000 (+0100) Subject: [Fix] Fix conditional learning X-Git-Tag: 1.3.0~581 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9806fa5b247edaafe0a541639c347504c2b19890;p=thirdparty%2Frspamd.git [Fix] Fix conditional learning --- diff --git a/src/libstat/classifiers/bayes.c b/src/libstat/classifiers/bayes.c index 4e30f191e1..5ebba8d56b 100644 --- a/src/libstat/classifiers/bayes.c +++ b/src/libstat/classifiers/bayes.c @@ -274,6 +274,7 @@ bayes_classify (struct rspamd_classifier * ctx, } pprob = rspamd_mempool_alloc (task->task_pool, sizeof (*pprob)); + *pprob = final_prob; rspamd_mempool_set_variable (task->task_pool, "bayes_prob", pprob, NULL); if (cl.processed_tokens > 0 && fabs (final_prob - 0.5) > 0.05) { diff --git a/src/libstat/stat_process.c b/src/libstat/stat_process.c index dc00184295..1c8fbf070a 100644 --- a/src/libstat/stat_process.c +++ b/src/libstat/stat_process.c @@ -484,6 +484,7 @@ rspamd_stat_classifiers_learn (struct rspamd_stat_ctx *st_ctx, while (cur) { cb_ref = GPOINTER_TO_INT (cur->data); + lua_settop (L, 0); lua_rawgeti (L, LUA_REGISTRYINDEX, cb_ref); /* Push task and two booleans: is_spam and is_unlearn */ ptask = lua_newuserdata (L, sizeof (*ptask)); @@ -509,7 +510,7 @@ rspamd_stat_classifiers_learn (struct rspamd_stat_ctx *st_ctx, } lua_settop (L, 0); - continue; /* Go to the next classifier */ + break; } } } @@ -518,6 +519,10 @@ rspamd_stat_classifiers_learn (struct rspamd_stat_ctx *st_ctx, cur = g_list_next (cur); } + if (conditionally_skipped) { + break; + } + if (cl->subrs->learn_spam_func (cl, task->tokens, task, spam, task->flags & RSPAMD_TASK_FLAG_UNLEARN, err)) { learned = TRUE;