rspamd_ftok_t t3;
};
+struct lua_shingle_filter_cbdata {
+ struct rspamd_mime_text_part *part;
+ rspamd_mempool_t *pool;
+};
+
#define STORE_TOKEN(i, t) do { \
if ((i) < part->utf_words->len) { \
word = &g_array_index (part->utf_words, rspamd_stat_token_t, (i)); \
gsize i, min_idx = 0;
struct lua_shingle_data *sd;
rspamd_stat_token_t *word;
- struct rspamd_mime_text_part *part = (struct rspamd_mime_text_part *)ud;
+ struct lua_shingle_filter_cbdata *cbd = (struct lua_shingle_filter_cbdata *)ud;
+ struct rspamd_mime_text_part *part;
+
+ part = cbd->part;
for (i = 0; i < count; i ++) {
if (minimal > input[i]) {
}
}
- sd = g_malloc0 (sizeof (*sd));
+ sd = rspamd_mempool_alloc0 (cbd->pool, sizeof (*sd));
sd->hash = minimal;
struct lua_shingle_data *sd;
rspamd_cryptobox_hash_state_t st;
rspamd_stat_token_t *word;
+ struct lua_shingle_filter_cbdata cbd;
if (part && pool) {
/* TODO: add keys and algorithms support */
sizeof (hexdigest));
lua_pushlstring (L, hexdigest, sizeof (hexdigest) - 1);
+ cbd.pool = pool;
+ cbd.part = part;
sgl = rspamd_shingles_from_text (part->utf_words, key,
- pool, lua_shingles_filter, part, RSPAMD_SHINGLES_MUMHASH);
+ pool, lua_shingles_filter, &cbd, RSPAMD_SHINGLES_MUMHASH);
if (sgl == NULL) {
lua_pushnil (L);