diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-11-23 10:04:00 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-11-23 10:04:00 +0000 |
commit | bfeff0ab44bf0062a6ad3083b3becde22f08d4cf (patch) | |
tree | af92cb21f25c3a739dfca82d0140c74b194ff336 /src/libstat/tokenizers | |
parent | 62fee4b415f9c4e738f7fd5dea441dabe1244d2d (diff) | |
download | rspamd-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.c | 5 |
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); } |