]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Implement .include_map
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 22 Aug 2014 22:50:24 +0000 (15:50 -0700)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 22 Aug 2014 22:50:24 +0000 (15:50 -0700)
src/libserver/cfg_utils.c

index 8d0955c5c8d9bcf937848828d288ac5fb595d185..765b0790aaf8f304985c75b9c8af1a64719b1096 100644 (file)
@@ -1021,6 +1021,8 @@ rspamd_ucl_fin_cb (rspamd_mempool_t * pool, struct map_cb_data *data)
        ucl_object_t *obj;
        struct ucl_parser *parser;
        guint32 checksum;
+       ucl_object_iter_t it = NULL;
+       const ucl_object_t *cur;
 
        if (prev != NULL) {
                if (prev->buf != NULL) {
@@ -1048,7 +1050,12 @@ rspamd_ucl_fin_cb (rspamd_mempool_t * pool, struct map_cb_data *data)
                else {
                        obj = ucl_parser_get_object (parser);
                        ucl_parser_free (parser);
-                       /* XXX: add replace objects code */
+                       it = NULL;
+
+                       while ((cur = ucl_iterate_object (obj, &it, true))) {
+                               ucl_object_replace_key (cbdata->cfg->rcl_obj, (ucl_object_t *)cur,
+                                               cur->key, cur->keylen, false);
+                       }
                        ucl_object_unref (obj);
                        data->map->checksum = checksum;
                }