diff options
Diffstat (limited to 'src/lua')
-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; } } |