summaryrefslogtreecommitdiffstats
path: root/src/lua/lua_classifier.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rambler-co.ru>2012-10-02 17:35:42 +0400
committerVsevolod Stakhov <vsevolod@rambler-co.ru>2012-10-02 17:35:42 +0400
commit80d2b194b1e8ce902a2feac5389bc4de8d5732a5 (patch)
treee3211a619650b9e8af9967e194f668cea25e53fc /src/lua/lua_classifier.c
parent6205f36ee17d54e9e43d495ba929ed7708c98027 (diff)
downloadrspamd-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.c19
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;
}
}