]> source.dussan.org Git - rspamd.git/commitdiff
* Fix wirting message id during fuzzy_add command
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 4 Aug 2010 13:50:57 +0000 (17:50 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Wed, 4 Aug 2010 13:50:57 +0000 (17:50 +0400)
* Display weight of symbols correctly

src/filter.c
src/main.h
src/plugins/fuzzy_check.c
src/worker.c

index d5e127b7aa6e0948e189125d27fafcdef37b2935..9e2da0c57c38b8a74aa73280f4cd222bd8d8e600 100644 (file)
@@ -97,7 +97,7 @@ insert_metric_result (struct worker_task *task, struct metric *metric, const cha
                        memory_pool_add_destructor (task->task_pool, (pool_destruct_func) g_list_free, s->options);
                }
 
-               s->score = w;
+               s->score += w;
        }
        else {
                s = memory_pool_alloc (task->task_pool, sizeof (struct symbol));
index 697c63f472299af81419b26cd322123360dbd282..091daf16884606baa9203982ba15960a2318b3b9 100644 (file)
@@ -257,6 +257,8 @@ struct worker_task* construct_task (struct rspamd_worker *worker);
  * Destroy task object and remove its IO dispatcher if it exists
  */
 void free_task (struct worker_task *task, gboolean is_soft);
+void free_task_hard (gpointer ud);
+void free_task_soft (gpointer ud);
 
 /**
  * If set, reopen log file on next write
index 49b9b976e07bf3bb1501b001579766b7f4468ddc..9142ca49e9c03e031d8335ee916ec21eced1b763 100644 (file)
@@ -718,7 +718,8 @@ fuzzy_process_handler (struct controller_session *session, f_str_t * in)
                }
        }
 
-       free_task (task, FALSE);
+       memory_pool_add_destructor (session->session_pool, (pool_destruct_func)free_task_soft, task);
+
        if (*saved == 0) {
                session->state = STATE_REPLY;
                r = rspamd_snprintf (out_buf, sizeof (out_buf), "no hashes written" CRLF);
index 15b73e2c7f2c9a1e9db25a7542baabfa8cf52954..d249843b8326467c945ac2909fd1c934571e4ba0 100644 (file)
@@ -277,8 +277,16 @@ free_task (struct worker_task *task, gboolean is_soft)
        }
 }
 
-static void
-free_task_hard (void *ud)
+void
+free_task_hard (gpointer ud)
+{
+       struct worker_task             *task = ud;
+
+       free_task (task, FALSE);
+}
+
+void
+free_task_soft (gpointer ud)
 {
        struct worker_task             *task = ud;