]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Parse comma separated lists in rspamd_rcl_parse_struct_string_list.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Apr 2015 10:47:42 +0000 (11:47 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 17 Apr 2015 10:47:42 +0000 (11:47 +0100)
src/libserver/cfg_rcl.c

index 7b2bae7678a1d97368a1750f5a2f70e6cab1b483..05ba79edac4608c2ba900b2cefc83f8818074b90 100644 (file)
@@ -1953,7 +1953,7 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool,
 {
        struct rspamd_rcl_struct_parser *pd = ud;
        GList **target;
-       gchar *val;
+       gchar *val, **strvec, **cvec;
        const ucl_object_t *cur;
        const gsize num_str_len = 32;
        ucl_object_iter_t iter = NULL;
@@ -1965,8 +1965,18 @@ rspamd_rcl_parse_struct_string_list (rspamd_mempool_t *pool,
        while ((cur = ucl_object_iterate_safe (iter, true)) != NULL) {
                switch (cur->type) {
                case UCL_STRING:
-                       val = rspamd_mempool_strdup (pool, ucl_copy_value_trash (cur));
-                       break;
+                       strvec = g_strsplit_set (ucl_object_tostring (cur), ",", -1);
+                       cvec = strvec;
+
+                       while (*cvec) {
+                               *target = g_list_prepend (*target,
+                                               rspamd_mempool_strdup (pool, *cvec));
+                               cvec ++;
+                       }
+
+                       g_strfreev (strvec);
+                       /* Go to the next object */
+                       continue;
                case UCL_INT:
                        val = rspamd_mempool_alloc (pool, num_str_len);
                        rspamd_snprintf (val, num_str_len, "%L", cur->value.iv);