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));
* 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
}
}
- 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);
}
}
-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;