aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstat/tokenizers
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-23 10:04:00 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-11-23 10:04:00 +0000
commitbfeff0ab44bf0062a6ad3083b3becde22f08d4cf (patch)
treeaf92cb21f25c3a739dfca82d0140c74b194ff336 /src/libstat/tokenizers
parent62fee4b415f9c4e738f7fd5dea441dabe1244d2d (diff)
downloadrspamd-bfeff0ab44bf0062a6ad3083b3becde22f08d4cf.tar.gz
rspamd-bfeff0ab44bf0062a6ad3083b3becde22f08d4cf.zip
Some more fixes to OSB algorithm
Diffstat (limited to 'src/libstat/tokenizers')
-rw-r--r--src/libstat/tokenizers/osb.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstat/tokenizers/osb.c b/src/libstat/tokenizers/osb.c
index cac8f7071..2d1b3bb3e 100644
--- a/src/libstat/tokenizers/osb.c
+++ b/src/libstat/tokenizers/osb.c
@@ -308,7 +308,7 @@ rspamd_tokenizer_osb (struct rspamd_tokenizer_runtime *rt,
memcpy (new->data, &cur, sizeof (cur));
}
- new->window_idx = i;
+ new->window_idx = i + 1;
if (g_tree_lookup (tree, new) == NULL) {
g_tree_insert (tree, new, new);
@@ -318,6 +318,7 @@ rspamd_tokenizer_osb (struct rspamd_tokenizer_runtime *rt,
}
if (processed <= window_size) {
+ memmove (hashpipe, hashpipe + (window_size - processed + 1), processed);
for (i = 1; i < processed; i++) {
new = rspamd_mempool_alloc0 (pool, sizeof (rspamd_token_t));
new->datalen = sizeof (gint64);
@@ -335,6 +336,8 @@ rspamd_tokenizer_osb (struct rspamd_tokenizer_runtime *rt,
memcpy (new->data, &cur, sizeof (cur));
}
+ new->window_idx = i + 1;
+
if (g_tree_lookup (tree, new) == NULL) {
g_tree_insert (tree, new, new);
}