diff options
author | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-10-02 17:35:42 +0400 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rambler-co.ru> | 2012-10-02 17:35:42 +0400 |
commit | 80d2b194b1e8ce902a2feac5389bc4de8d5732a5 (patch) | |
tree | e3211a619650b9e8af9967e194f668cea25e53fc /src/lua/lua_classifier.c | |
parent | 6205f36ee17d54e9e43d495ba929ed7708c98027 (diff) | |
download | rspamd-80d2b194b1e8ce902a2feac5389bc4de8d5732a5.tar.gz rspamd-80d2b194b1e8ce902a2feac5389bc4de8d5732a5.zip |
Allow multiply statfiles with a same label.
Diffstat (limited to 'src/lua/lua_classifier.c')
-rw-r--r-- | src/lua/lua_classifier.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/lua/lua_classifier.c b/src/lua/lua_classifier.c index c6eb2cf18..be18cda0d 100644 --- a/src/lua/lua_classifier.c +++ b/src/lua/lua_classifier.c @@ -278,14 +278,23 @@ lua_classifier_get_statfile_by_label (lua_State *L) struct classifier_config *ccf = lua_check_classifier (L); struct statfile *st, **pst; const gchar *label; + GList *cur; + gint i; label = luaL_checkstring (L, 2); if (ccf && label) { - st = g_hash_table_lookup (ccf->labels, label); - if (st) { - pst = lua_newuserdata (L, sizeof (struct statfile *)); - lua_setclass (L, "rspamd{statfile}", -1); - *pst = st; + cur = g_hash_table_lookup (ccf->labels, label); + if (cur) { + lua_newtable (L); + i = 1; + while (cur) { + st = cur->data; + pst = lua_newuserdata (L, sizeof (struct statfile *)); + lua_setclass (L, "rspamd{statfile}", -1); + *pst = st; + lua_rawseti (L, -2, i++); + cur = g_list_next (cur); + } return 1; } } |