]> source.dussan.org Git - rspamd.git/commitdiff
Adopt new libucl.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 19 Apr 2014 21:28:44 +0000 (22:28 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 19 Apr 2014 21:28:44 +0000 (22:28 +0100)
21 files changed:
src/cfg_file.h
src/cfg_rcl.c
src/cfg_rcl.h
src/cfg_utils.c
src/client/rspamc.c
src/lua/lua_cfg_file.c
src/lua/lua_classifier.c
src/lua/lua_common.h
src/lua/lua_config.c
src/lua/lua_rcl.c
src/lua_worker.c
src/plugins/chartable.c
src/plugins/dkim_check.c
src/plugins/fuzzy_check.c
src/plugins/regexp.c
src/plugins/spf.c
src/plugins/surbl.c
src/protocol.c
src/rdns
src/ucl
src/webui.c

index f4bdb6ec5bf566a77cc08b58e1c4bd4e3640ec11..6038cb00d0169ab5db6cc4978e1da9bf73eb8819 100644 (file)
@@ -241,7 +241,7 @@ struct rspamd_worker_param_parser {
 struct rspamd_worker_cfg_parser {
        struct rspamd_worker_param_parser *parsers;             /**< parsers hash                                                                               */
        gint type;                                                                              /**< workers quark                                                                              */
-       gboolean (*def_obj_parser)(ucl_object_t *obj, gpointer ud);     /**< default object parser                                                              */
+       gboolean (*def_obj_parser)(const ucl_object_t *obj, gpointer ud);       /**< default object parser                                                              */
        gpointer def_ud;
        UT_hash_handle hh;                                                              /**< hash by type                                                                               */
 };
@@ -426,7 +426,7 @@ void free_config (struct config_file *cfg);
  * @param opt_name name of option to get
  * @return module value or NULL if option does not defined
  */
-ucl_object_t* get_module_opt (struct config_file *cfg, const gchar *module_name,
+const ucl_object_t* get_module_opt (struct config_file *cfg, const gchar *module_name,
                const gchar *opt_name);
 
 /**
index 2d0f9b186c51bf1076615a8c56d358df04134409..2714b428e0ff591237fd03df0e2ebd6e0026a577 100644 (file)
  * Common section handlers
  */
 static gboolean
-rspamd_rcl_logging_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_logging_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val;
+       const ucl_object_t *val;
        const gchar *facility, *log_type, *log_level;
 
        val = ucl_object_find_key (obj, "type");
@@ -155,10 +155,10 @@ rspamd_rcl_logging_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_options_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_options_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val;
+       const ucl_object_t *val;
        const gchar *user_settings, *domain_settings;
 
        /* Handle user and domain settings */
@@ -202,11 +202,11 @@ rspamd_symbols_group_find_func (gconstpointer a, gconstpointer b)
  */
 static gboolean
 rspamd_rcl_insert_symbol (struct config_file *cfg, struct metric *metric,
-               ucl_object_t *obj, gboolean is_legacy, GError **err)
+               const ucl_object_t *obj, gboolean is_legacy, GError **err)
 {
        const gchar *group = "ungrouped", *description = NULL, *sym_name;
        gdouble symbol_score, *score_ptr;
-       ucl_object_t *val;
+       const ucl_object_t *val;
        struct symbols_group *sym_group;
        struct symbol_def *sym_def;
        GList *metric_list, *group_list;
@@ -296,10 +296,10 @@ rspamd_rcl_insert_symbol (struct config_file *cfg, struct metric *metric,
 }
 
 static gboolean
-rspamd_rcl_metric_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_metric_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val, *cur;
+       const ucl_object_t *val, *cur;
        const gchar *metric_name, *subject_name, *semicolon, *act_str;
        struct metric *metric;
        struct metric_action *action;
@@ -431,10 +431,10 @@ rspamd_rcl_metric_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_worker_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_worker_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val, *cur;
+       const ucl_object_t *val, *cur;
        ucl_object_iter_t it = NULL;
        const gchar *worker_type, *worker_bind;
        GQuark qtype;
@@ -483,7 +483,7 @@ rspamd_rcl_worker_handler (struct config_file *cfg, ucl_object_t *obj,
                }
        }
 
-       wrk->options = obj;
+       wrk->options = (ucl_object_t *)obj;
 
        if (!rspamd_rcl_section_parse_defaults (section, cfg, obj, wrk, err)) {
                return FALSE;
@@ -553,7 +553,7 @@ rspamd_rcl_set_lua_globals (struct config_file *cfg, lua_State *L)
 }
 
 static gboolean
-rspamd_rcl_lua_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_lua_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        const gchar *lua_src = memory_pool_strdup (cfg->cfg_pool, ucl_object_tostring (obj));
@@ -669,10 +669,10 @@ rspamd_rcl_add_module_path (struct config_file *cfg, const gchar *path, GError *
 }
 
 static gboolean
-rspamd_rcl_modules_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_modules_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val, *cur;
+       const ucl_object_t *val, *cur;
        const gchar *data;
 
        if (obj->type == UCL_OBJECT) {
@@ -700,11 +700,11 @@ rspamd_rcl_modules_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_statfile_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_statfile_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct classifier_config *ccf = ud;
-       ucl_object_t *val;
+       const ucl_object_t *val;
        struct statfile *st;
        const gchar *data;
        gdouble binlog_rotate;
@@ -765,7 +765,7 @@ rspamd_rcl_statfile_handler (struct config_file *cfg, ucl_object_t *obj,
                        return FALSE;
                }
 
-               st->opts = obj;
+               st->opts = (ucl_object_t *)obj;
 
                val = ucl_object_find_key (obj, "spam");
                if (val == NULL) {
@@ -790,10 +790,10 @@ rspamd_rcl_statfile_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_classifier_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_classifier_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val, *cur;
+       const ucl_object_t *val, *cur;
        ucl_object_iter_t it = NULL;
        const gchar *key, *type;
        struct classifier_config *ccf, *found = NULL;
@@ -860,10 +860,10 @@ rspamd_rcl_classifier_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_composite_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_composite_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val;
+       const ucl_object_t *val;
        struct expression *expr;
        struct rspamd_composite *composite;
        const gchar *composite_name, *composite_expression;
@@ -904,10 +904,10 @@ rspamd_rcl_composite_handler (struct config_file *cfg, ucl_object_t *obj,
 }
 
 static gboolean
-rspamd_rcl_view_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_view_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
-       ucl_object_t *val, *cur;
+       const ucl_object_t *val, *cur;
        struct rspamd_view *view;
        const gchar *view_ip, *view_client_ip, *view_symbols,
                                *view_rcpt, *view_from;
@@ -975,7 +975,7 @@ rspamd_rcl_view_handler (struct config_file *cfg, ucl_object_t *obj,
  * for default handlers
  */
 static gboolean
-rspamd_rcl_empty_handler (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_empty_handler (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        return rspamd_rcl_section_parse_defaults (section, cfg, obj, cfg, err);
@@ -1200,9 +1200,9 @@ rspamd_rcl_config_get_section (struct rspamd_rcl_section *top,
 
 gboolean
 rspamd_read_rcl_config (struct rspamd_rcl_section *top,
-               struct config_file *cfg, ucl_object_t *obj, GError **err)
+               struct config_file *cfg, const ucl_object_t *obj, GError **err)
 {
-       ucl_object_t *found, *cur_obj;
+       const ucl_object_t *found, *cur_obj;
        struct rspamd_rcl_section *cur, *tmp;
 
        if (obj->type != UCL_OBJECT) {
@@ -1238,16 +1238,16 @@ rspamd_read_rcl_config (struct rspamd_rcl_section *top,
                }
        }
 
-       cfg->rcl_obj = obj;
+       cfg->rcl_obj = (ucl_object_t *)obj;
 
        return TRUE;
 }
 
 gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
-               struct config_file *cfg, ucl_object_t *obj, gpointer ptr,
+               struct config_file *cfg, const ucl_object_t *obj, gpointer ptr,
                GError **err)
 {
-       ucl_object_t *found;
+       const ucl_object_t *found;
        struct rspamd_rcl_default_handler_data *cur, *tmp;
 
        if (obj->type != UCL_OBJECT) {
@@ -1269,7 +1269,7 @@ gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
 }
 
 gboolean
-rspamd_rcl_parse_struct_string (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_string (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
@@ -1302,7 +1302,7 @@ rspamd_rcl_parse_struct_string (struct config_file *cfg, ucl_object_t *obj,
 }
 
 gboolean
-rspamd_rcl_parse_struct_integer (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_integer (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
@@ -1360,7 +1360,7 @@ rspamd_rcl_parse_struct_integer (struct config_file *cfg, ucl_object_t *obj,
 }
 
 gboolean
-rspamd_rcl_parse_struct_double (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_double (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
@@ -1377,7 +1377,7 @@ rspamd_rcl_parse_struct_double (struct config_file *cfg, ucl_object_t *obj,
 }
 
 gboolean
-rspamd_rcl_parse_struct_time (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_time (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
@@ -1426,13 +1426,13 @@ rspamd_rcl_parse_struct_time (struct config_file *cfg, ucl_object_t *obj,
 }
 
 gboolean
-rspamd_rcl_parse_struct_string_list (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_string_list (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
        GList **target;
        gchar *val;
-       ucl_object_t *cur;
+       const ucl_object_t *cur;
        const gsize num_str_len = 32;
        ucl_object_iter_t iter = NULL;
 
@@ -1474,7 +1474,7 @@ rspamd_rcl_parse_struct_string_list (struct config_file *cfg, ucl_object_t *obj,
 }
 
 gboolean
-rspamd_rcl_parse_struct_boolean (struct config_file *cfg, ucl_object_t *obj,
+rspamd_rcl_parse_struct_boolean (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err)
 {
        struct rspamd_rcl_struct_parser *pd = ud;
index 39ce2fc432647e93b904f7a1db35ae1eeda3af63..99839d1ea61451bc15db7ac2f28fea7e08644621 100644 (file)
@@ -63,7 +63,7 @@ struct rspamd_rcl_struct_parser {
  * @param err error object
  * @return TRUE if a section has been parsed
  */
-typedef gboolean (*rspamd_rcl_handler_t) (struct config_file *cfg, ucl_object_t *obj,
+typedef gboolean (*rspamd_rcl_handler_t) (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
@@ -116,7 +116,7 @@ struct rspamd_rcl_section *rspamd_rcl_config_get_section (struct rspamd_rcl_sect
  * @return TRUE if an object can be parsed
  */
 gboolean rspamd_read_rcl_config (struct rspamd_rcl_section *top,
-               struct config_file *cfg, ucl_object_t *obj, GError **err);
+               struct config_file *cfg, const ucl_object_t *obj, GError **err);
 
 
 /**
@@ -129,7 +129,7 @@ gboolean rspamd_read_rcl_config (struct rspamd_rcl_section *top,
  * @return TRUE if the object has been parsed
  */
 gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
-               struct config_file *cfg, ucl_object_t *obj, gpointer ptr,
+               struct config_file *cfg, const ucl_object_t *obj, gpointer ptr,
                GError **err);
 /**
  * Here is a section of common handlers that accepts rcl_struct_parser
@@ -146,7 +146,7 @@ gboolean rspamd_rcl_section_parse_defaults (struct rspamd_rcl_section *section,
  * @param err error pointer
  * @return TRUE if a string value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_string (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_string (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
@@ -158,7 +158,7 @@ gboolean rspamd_rcl_parse_struct_string (struct config_file *cfg, ucl_object_t *
  * @param err error pointer
  * @return TRUE if a value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_integer (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_integer (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 
@@ -171,7 +171,7 @@ gboolean rspamd_rcl_parse_struct_integer (struct config_file *cfg, ucl_object_t
  * @param err error pointer
  * @return TRUE if a value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_double (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_double (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
@@ -183,7 +183,7 @@ gboolean rspamd_rcl_parse_struct_double (struct config_file *cfg, ucl_object_t *
  * @param err error pointer
  * @return TRUE if a value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_time (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_time (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
@@ -195,7 +195,7 @@ gboolean rspamd_rcl_parse_struct_time (struct config_file *cfg, ucl_object_t *ob
  * @param err error pointer
  * @return TRUE if a value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_string_list (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_string_list (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
@@ -207,7 +207,7 @@ gboolean rspamd_rcl_parse_struct_string_list (struct config_file *cfg, ucl_objec
  * @param err error pointer
  * @return TRUE if a value has been successfully parsed
  */
-gboolean rspamd_rcl_parse_struct_boolean (struct config_file *cfg, ucl_object_t *obj,
+gboolean rspamd_rcl_parse_struct_boolean (struct config_file *cfg, const ucl_object_t *obj,
                gpointer ud, struct rspamd_rcl_section *section, GError **err);
 
 /**
index 316b649cc540e1d2930fc55aa62c3b5b548064a2..a83f63573a91a0f27efa83dbd073bddd9c33b335 100644 (file)
@@ -337,10 +337,10 @@ free_config (struct config_file *cfg)
        memory_pool_delete (cfg->cfg_pool);
 }
 
-ucl_object_t        *
+const ucl_object_t        *
 get_module_opt (struct config_file *cfg, const gchar *module_name, const gchar *opt_name)
 {
-       ucl_object_t *res = NULL, *sec;
+       const ucl_object_t *res = NULL, *sec;
 
        sec = ucl_obj_get_key (cfg->rcl_obj, module_name);
        if (sec != NULL) {
index 8defef0f452f388314487d7debe255487f1c2333..8ef9ebad0a9fe4419dc80715d9dd008afc2f93d4 100644 (file)
@@ -374,9 +374,9 @@ add_options (GHashTable *opts)
 }
 
 static void
-rspamc_symbol_ouptut (ucl_object_t *obj)
+rspamc_symbol_ouptut (const ucl_object_t *obj)
 {
-       ucl_object_t *cur, *it;
+       const ucl_object_t *cur, *it;
 
        rspamd_fprintf (stdout, "Symbol: %s ", ucl_object_key (obj));
        cur = ucl_object_find_key (obj, "score");
@@ -403,10 +403,10 @@ rspamc_symbol_ouptut (ucl_object_t *obj)
 }
 
 static void
-rspamc_metric_output (ucl_object_t *obj)
+rspamc_metric_output (const ucl_object_t *obj)
 {
        ucl_object_iter_t it = NULL;
-       ucl_object_t *cur;
+       const ucl_object_t *cur;
        gdouble score, required_score;
        gint got_scores = 0;
 
@@ -442,7 +442,7 @@ static void
 rspamc_symbols_output (ucl_object_t *obj)
 {
        ucl_object_iter_t it = NULL;
-       ucl_object_t *cur;
+       const ucl_object_t *cur;
        gchar *emitted;
 
        while ((cur = ucl_iterate_object (obj, &it, true)) != NULL) {
index 6fe7739878d45d4bf349c6f386f09832f40591af..9e636ecef6cdfb7da0b01106beeb48380baa08c9 100644 (file)
@@ -140,7 +140,7 @@ lua_post_load_config (struct config_file *cfg)
                        if (name != NULL && lua_istable (L, -1)) {
                                obj = lua_rcl_obj_get (L, -1);
                                if (obj != NULL) {
-                                       cfg->rcl_obj = ucl_object_insert_key_merged (cfg->rcl_obj, obj, name, keylen, true);
+                                       ucl_object_insert_key_merged (cfg->rcl_obj, obj, name, keylen, true);
                                }
                        }
                }
index be574319aa1a1f7caf9668ab2c1595855a3849f9..82e7ea2b7c0036118d3f25cf9dbec8e5b81e4b09 100644 (file)
@@ -382,7 +382,7 @@ lua_statfile_get_param (lua_State *L)
 {
        struct statfile                *st = lua_check_statfile (L);
        const gchar                    *param;
-       ucl_object_t                    *value;
+       const ucl_object_t                    *value;
 
        param = luaL_checkstring (L, 2);
 
index cdce7b3d35b6a12632708f35144af6d4b41db414..d03ca168e42508a77071760f7913421125f60673 100644 (file)
@@ -114,7 +114,7 @@ void free_lua_locked (struct lua_locked_state *st);
  * @param L lua state
  * @param obj object to push
  */
-gint lua_rcl_obj_push (lua_State *L, ucl_object_t *obj, gboolean allow_array);
+gint lua_rcl_obj_push (lua_State *L, const ucl_object_t *obj, gboolean allow_array);
 
 /**
  * Extract rcl object from lua object
index 7987fa00ed596f0f6366029c59829190aacd9555..acf3ae3be11fd78b8faf6e5749344ff7e3c85dd4 100644 (file)
@@ -156,7 +156,7 @@ lua_config_get_module_opt (lua_State * L)
 {
        struct config_file             *cfg = lua_check_config (L);
        const gchar                     *mname, *optname;
-       ucl_object_t              *obj;
+       const ucl_object_t              *obj;
 
        if (cfg) {
                mname = luaL_checkstring (L, 2);
@@ -192,7 +192,7 @@ lua_config_get_all_opt (lua_State * L)
 {
        struct config_file             *cfg = lua_check_config (L);
        const gchar                     *mname;
-       ucl_object_t              *obj;
+       const ucl_object_t              *obj;
 
        if (cfg) {
                mname = luaL_checkstring (L, 2);
index 2768ac4a4da8c61aa8b9b1a70d29cdae4e6571df..efedc0725c8e0edb9b8f67a641b29e2452c12dfb 100644 (file)
@@ -27,8 +27,8 @@
  * @file lua rcl bindings
  */
 
-static gint lua_rcl_obj_push_array (lua_State *L, ucl_object_t *obj);
-static gint lua_rcl_obj_push_simple (lua_State *L, ucl_object_t *obj, gboolean allow_array);
+static gint lua_rcl_obj_push_array (lua_State *L, const ucl_object_t *obj);
+static gint lua_rcl_obj_push_simple (lua_State *L, const ucl_object_t *obj, gboolean allow_array);
 static ucl_object_t* lua_rcl_table_get (lua_State *L, gint idx);
 static ucl_object_t* lua_rcl_elt_get (lua_State *L, gint idx);
 
@@ -39,7 +39,7 @@ static ucl_object_t* lua_rcl_elt_get (lua_State *L, gint idx);
  * @param obj
  */
 static void
-lua_rcl_obj_push_elt (lua_State *L, const char *key, ucl_object_t *obj)
+lua_rcl_obj_push_elt (lua_State *L, const char *key, const ucl_object_t *obj)
 {
        lua_pushstring (L, key);
        lua_rcl_obj_push (L, obj, TRUE);
@@ -53,9 +53,9 @@ lua_rcl_obj_push_elt (lua_State *L, const char *key, ucl_object_t *obj)
  * @return
  */
 static gint
-lua_rcl_obj_push_obj (lua_State *L, ucl_object_t *obj, gboolean allow_array)
+lua_rcl_obj_push_obj (lua_State *L, const ucl_object_t *obj, gboolean allow_array)
 {
-       ucl_object_t *cur;
+       const ucl_object_t *cur;
        ucl_object_iter_t it = NULL;
 
        if (allow_array && obj->next != NULL) {
@@ -78,9 +78,9 @@ lua_rcl_obj_push_obj (lua_State *L, ucl_object_t *obj, gboolean allow_array)
  * @return
  */
 static gint
-lua_rcl_obj_push_array (lua_State *L, ucl_object_t *obj)
+lua_rcl_obj_push_array (lua_State *L, const ucl_object_t *obj)
 {
-       ucl_object_t *cur;
+       const ucl_object_t *cur;
        gint i = 1;
 
        lua_newtable (L);
@@ -98,7 +98,7 @@ lua_rcl_obj_push_array (lua_State *L, ucl_object_t *obj)
  * Push a simple object to lua depending on its actual type
  */
 static gint
-lua_rcl_obj_push_simple (lua_State *L, ucl_object_t *obj, gboolean allow_array)
+lua_rcl_obj_push_simple (lua_State *L, const ucl_object_t *obj, gboolean allow_array)
 {
        if (allow_array && obj->next != NULL) {
                /* Actually we need to push this as an array */
@@ -137,7 +137,7 @@ lua_rcl_obj_push_simple (lua_State *L, ucl_object_t *obj, gboolean allow_array)
  * @param obj object to push
  */
 gint
-lua_rcl_obj_push (lua_State *L, ucl_object_t *obj, gboolean allow_array)
+lua_rcl_obj_push (lua_State *L, const ucl_object_t *obj, gboolean allow_array)
 {
        switch (obj->type) {
        case UCL_OBJECT:
@@ -165,12 +165,13 @@ lua_rcl_table_get (lua_State *L, gint idx)
        /* Table iterate */
        lua_pushvalue (L, idx);
        lua_pushnil (L);
+       top = ucl_object_typed_new (UCL_OBJECT);
        while (lua_next (L, -2) != 0) {
                /* copy key to avoid modifications */
                lua_pushvalue (L, -2);
                k = lua_tolstring (L, -1, &keylen);
                obj = lua_rcl_elt_get (L, -2);
-               top = ucl_object_insert_key (top, obj, k, keylen, true);
+               ucl_object_insert_key (top, obj, k, keylen, true);
                lua_pop (L, 2);
        }
        lua_pop (L, 1);
index e9b06f50881ae0eb3167bb7f94b03860f5c696ec..2bf4a9a9fed80175af93f8092f1d60db4538601f 100644 (file)
@@ -191,7 +191,7 @@ static int
 lua_worker_get_option (lua_State *L)
 {
        struct rspamd_lua_worker_ctx                                    *ctx = lua_check_lua_worker (L);
-       ucl_object_t                                                                    *val;
+       const ucl_object_t                                                                      *val;
        const gchar                                                                             *name;
 
        if (ctx) {
index ec848f6df7073045f7722f90f9fcf2c85266d921..47b5efd7e3957caf2c211be3c4cea5fdd1d08a73 100644 (file)
@@ -84,7 +84,7 @@ chartable_module_init (struct config_file *cfg, struct module_ctx **ctx)
 gint
 chartable_module_config (struct config_file *cfg)
 {
-       ucl_object_t             *value;
+       const ucl_object_t             *value;
        gint                            res = TRUE;
 
        if ((value = get_module_opt (cfg, "chartable", "symbol")) != NULL) {
index b7c5515e56a605678b8c104e0912a8eb335a2fa5..225f781c08b377fea8e1915409bf90baaca1b415 100644 (file)
@@ -103,7 +103,7 @@ dkim_module_init (struct config_file *cfg, struct module_ctx **ctx)
 gint
 dkim_module_config (struct config_file *cfg)
 {
-       ucl_object_t             *value;
+       const ucl_object_t             *value;
        gint                            res = TRUE;
        guint                           cache_size, cache_expire;
        gboolean                                                got_trusted = FALSE;
index 2f48548a53cd452f1991fa63b5ec32eb0b3f4df1..d1e55a678a46f09ef7b4169cde72be17e3048605 100644 (file)
@@ -149,9 +149,9 @@ module_t fuzzy_check_module = {
 };
 
 static void
-parse_flags (struct fuzzy_rule *rule, struct config_file *cfg, ucl_object_t *val)
+parse_flags (struct fuzzy_rule *rule, struct config_file *cfg, const ucl_object_t *val)
 {
-       ucl_object_t *elt;
+       const ucl_object_t *elt;
        struct fuzzy_mapping *map;
        const gchar *sym = NULL;
 
@@ -325,9 +325,9 @@ fuzzy_rule_new (const char *default_symbol, memory_pool_t *pool)
 }
 
 static gint
-fuzzy_parse_rule (struct config_file *cfg, ucl_object_t *obj)
+fuzzy_parse_rule (struct config_file *cfg, const ucl_object_t *obj)
 {
-       ucl_object_t *value, *cur;
+       const ucl_object_t *value, *cur;
        struct fuzzy_rule *rule;
        ucl_object_iter_t it = NULL;
 
@@ -404,7 +404,7 @@ fuzzy_check_module_init (struct config_file *cfg, struct module_ctx **ctx)
 gint
 fuzzy_check_module_config (struct config_file *cfg)
 {
-       ucl_object_t             *value, *cur;
+       const ucl_object_t             *value, *cur;
        gint                      res = TRUE;
 
        if ((value = get_module_opt (cfg, "fuzzy_check", "symbol")) != NULL) {
index ece8a53fc420bd5d888facb246e327e08b518867..6569dd1507c1d730fd9a779f354533edfc68ecec 100644 (file)
@@ -570,7 +570,7 @@ gint
 regexp_module_config (struct config_file *cfg)
 {
        struct regexp_module_item      *cur_item;
-       ucl_object_t                   *sec, *value;
+       const ucl_object_t             *sec, *value;
        ucl_object_iter_t               it = NULL;
        gint                            res = TRUE;
        struct regexp_json_buf         *jb, **pjb;
index 99e7f664e9c295c9f6939aa9e38d868f96a0cd10..3953130676deab65b99d44f03116f3cb2fa18579 100644 (file)
@@ -95,7 +95,7 @@ spf_module_init (struct config_file *cfg, struct module_ctx **ctx)
 gint
 spf_module_config (struct config_file *cfg)
 {
-       ucl_object_t             *value;
+       const ucl_object_t             *value;
        gint                            res = TRUE;
        guint                           cache_size, cache_expire;
 
index 8478907f1acaabd817ea2a419e8392102eadeb0e..585e174fbf6c8f740613b8e55df5a176f4a24cd6 100644 (file)
@@ -269,7 +269,7 @@ surbl_module_config (struct config_file *cfg)
        struct suffix_item             *new_suffix, *cur_suffix = NULL;
        struct surbl_bit_item          *new_bit;
 
-       ucl_object_t                   *value, *cur, *cur_rule, *cur_bit;
+       const ucl_object_t                   *value, *cur, *cur_rule, *cur_bit;
        ucl_object_iter_t               it = NULL;
        const gchar                    *redir_val;
        guint32                         bit;
index 6a9ed3de667308316cda0d26d55a1be456def8fe..b0b70954c91b7726850f251e57153681f6dde9f6 100644 (file)
@@ -592,13 +592,14 @@ rspamd_metric_symbol_ucl (struct worker_task *task, struct metric *m,
        rspamd_printf_gstring (logbuf, "%s,", sym->name);
        description = g_hash_table_lookup (m->descriptions, sym->name);
 
-       obj = ucl_object_insert_key (obj, ucl_object_fromstring (sym->name), "name", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromdouble (sym->score), "score", 0, false);
+       obj = ucl_object_typed_new (UCL_OBJECT);
+       ucl_object_insert_key (obj, ucl_object_fromstring (sym->name), "name", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromdouble (sym->score), "score", 0, false);
        if (description) {
-               obj = ucl_object_insert_key (obj, ucl_object_fromstring (description), "description", 0, false);
+               ucl_object_insert_key (obj, ucl_object_fromstring (description), "description", 0, false);
        }
        if (sym->options != NULL) {
-               obj = ucl_object_insert_key (obj, rspamd_str_list_ucl (sym->options), "options", 0, false);
+               ucl_object_insert_key (obj, rspamd_str_list_ucl (sym->options), "options", 0, false);
        }
 
        return obj;
@@ -638,20 +639,21 @@ rspamd_metric_result_ucl (struct worker_task *task, struct metric_result *mres,
                        str_action_metric (action),
                        mres->score, required_score);
 
-       obj = ucl_object_insert_key (obj, ucl_object_frombool (is_spam),
+       obj = ucl_object_typed_new (UCL_OBJECT);
+       ucl_object_insert_key (obj, ucl_object_frombool (is_spam),
                        "is_spam", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_frombool (task->is_skipped),
+       ucl_object_insert_key (obj, ucl_object_frombool (task->is_skipped),
                        "is_skipped", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromdouble (mres->score),
+       ucl_object_insert_key (obj, ucl_object_fromdouble (mres->score),
                        "score", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromdouble (required_score),
+       ucl_object_insert_key (obj, ucl_object_fromdouble (required_score),
                        "required_score", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromstring (str_action_metric (action)),
+       ucl_object_insert_key (obj, ucl_object_fromstring (str_action_metric (action)),
                        "action", 0, false);
 
        if (action == METRIC_ACTION_REWRITE_SUBJECT) {
                subject = make_rewritten_subject (m, task);
-               obj = ucl_object_insert_key (obj, ucl_object_fromstring (subject),
+               ucl_object_insert_key (obj, ucl_object_fromstring (subject),
                                        "subject", 0, false);
        }
        /* Now handle symbols */
@@ -659,7 +661,7 @@ rspamd_metric_result_ucl (struct worker_task *task, struct metric_result *mres,
        while (g_hash_table_iter_next (&hiter, &h, &v)) {
                sym = (struct symbol *)v;
                sobj = rspamd_metric_symbol_ucl (task, m, sym, logbuf);
-               obj = ucl_object_insert_key (obj, sobj, h, 0, false);
+               ucl_object_insert_key (obj, sobj, h, 0, false);
        }
 
        /* Cut the trailing comma if needed */
@@ -684,7 +686,8 @@ rspamd_metric_result_ucl (struct worker_task *task, struct metric_result *mres,
 static void
 rspamd_ucl_tolegacy_output (struct worker_task *task, ucl_object_t *top, GString *out)
 {
-       ucl_object_t *metric, *score, *required_score, *is_spam, *elt, *symbols;
+       const ucl_object_t *metric, *score,
+               *required_score, *is_spam, *elt, *symbols;
        ucl_object_iter_t iter = NULL;
 
        metric = ucl_object_find_key (top, DEFAULT_METRIC);
@@ -704,7 +707,7 @@ rspamd_ucl_tolegacy_output (struct worker_task *task, ucl_object_t *top, GString
 
                symbols = ucl_object_find_key (metric, "symbols");
                while ((elt = ucl_iterate_object (symbols, &iter, true)) != NULL) {
-                       ucl_object_t *sym_score;
+                       const ucl_object_t *sym_score;
                        sym_score = ucl_object_find_key (elt, "score");
                        g_string_append_printf (out, "Symbol: %s; %.2f\r\n",
                                        ucl_object_key (elt),
@@ -742,24 +745,27 @@ write_check_reply (struct rspamd_http_message *msg, struct worker_task *task)
        }
        g_hash_table_iter_init (&hiter, task->results);
 
+       top = ucl_object_typed_new (UCL_OBJECT);
        /* Convert results to an ucl object */
        while (g_hash_table_iter_next (&hiter, &h, &v)) {
                metric_res = (struct metric_result *)v;
                obj = rspamd_metric_result_ucl (task, metric_res, logbuf);
-               top = ucl_object_insert_key (top, obj, h, 0, false);
+               ucl_object_insert_key (top, obj, h, 0, false);
        }
 
        if (task->messages != NULL) {
-               top = ucl_object_insert_key (top, rspamd_str_list_ucl (task->messages), "messages", 0, false);
+               ucl_object_insert_key (top, rspamd_str_list_ucl (task->messages), "messages", 0, false);
        }
        if (g_tree_nnodes (task->urls) > 0) {
-               top = ucl_object_insert_key (top, rspamd_urls_tree_ucl (task->urls, task), "urls", 0, false);
+               ucl_object_insert_key (top, rspamd_urls_tree_ucl (task->urls, task), "urls", 0, false);
        }
        if (g_tree_nnodes (task->emails) > 0) {
-               top = ucl_object_insert_key (top, rspamd_emails_tree_ucl (task->emails, task), "emails", 0, false);
+               ucl_object_insert_key (top, rspamd_emails_tree_ucl (task->emails, task),
+                               "emails", 0, false);
        }
        
-       top = ucl_object_insert_key (top, ucl_object_fromstring (task->message_id), "message-id", 0, false);
+       ucl_object_insert_key (top, ucl_object_fromstring (task->message_id),
+                       "message-id", 0, false);
 
        write_hashes_to_log (task, logbuf);
        if (!task->no_log) {
@@ -797,10 +803,11 @@ rspamd_protocol_write_reply (struct worker_task *task)
 
        task->state = CLOSING_CONNECTION;
 
+       top = ucl_object_typed_new (UCL_OBJECT);
        debug_task ("writing reply to client");
        if (task->error_code != 0) {
                msg->code = task->error_code;
-               top = ucl_object_insert_key (top, ucl_object_fromstring (task->last_error), "error", 0, false);
+               ucl_object_insert_key (top, ucl_object_fromstring (task->last_error), "error", 0, false);
                msg->body = g_string_sized_new (256);
                rspamd_ucl_emit_gstring (top, UCL_EMIT_JSON_COMPACT, msg->body);
                ucl_object_unref (top);
index b1762224e9c8015abd195282ebd2f7728076e23d..2838695f608ed5bb4ef3ed9dfd4d0a095bca2059 160000 (submodule)
--- a/src/rdns
+++ b/src/rdns
@@ -1 +1 @@
-Subproject commit b1762224e9c8015abd195282ebd2f7728076e23d
+Subproject commit 2838695f608ed5bb4ef3ed9dfd4d0a095bca2059
diff --git a/src/ucl b/src/ucl
index 8eb6d5601a8eec27cffa84479281207f726482d3..80ec7720f562baccc9d0205ca2fa54d70549a2e7 160000 (submodule)
--- a/src/ucl
+++ b/src/ucl
@@ -1 +1 @@
-Subproject commit 8eb6d5601a8eec27cffa84479281207f726482d3
+Subproject commit 80ec7720f562baccc9d0205ca2fa54d70549a2e7
index 829ea8e610bf6eabd90e2391f03fcc7c23c9b943..8b0fd87870f8268e93e583bd076a97cfff4ba416 100644 (file)
@@ -684,15 +684,15 @@ rspamd_webui_handle_auth (struct rspamd_http_connection_entry *conn_ent,
        /* Get uptime */
        uptime = time (NULL) - session->ctx->start_time;
 
-       obj = ucl_object_insert_key (obj, ucl_object_fromstring (RVERSION), "version", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromstring ("ok"), "auth", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (uptime), "uptime", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (data[0]), "clean", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (data[1]), "probable", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (data[2]), "greylist", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (data[3]), "reject", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (st->messages_scanned), "scanned", 0, false);
-       obj = ucl_object_insert_key (obj, ucl_object_fromint (st->messages_learned), "learned", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromstring (RVERSION), "version", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromstring ("ok"), "auth", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (uptime), "uptime", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (data[0]), "clean", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (data[1]), "probable", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (data[2]), "greylist", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (data[3]), "reject", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (st->messages_scanned), "scanned", 0, false);
+       ucl_object_insert_key (obj, ucl_object_fromint (st->messages_learned), "learned", 0, false);
 
        rspamd_webui_send_ucl (conn_ent, obj);
        ucl_object_unref (obj);
@@ -736,27 +736,27 @@ rspamd_webui_handle_symbols (struct rspamd_http_connection_entry *conn_ent,
        while (cur_gr) {
                gr = cur_gr->data;
                obj = ucl_object_typed_new (UCL_OBJECT);
-               obj = ucl_object_insert_key (obj, ucl_object_fromstring (gr->name), "group", 0, false);
+               ucl_object_insert_key (obj, ucl_object_fromstring (gr->name), "group", 0, false);
                /* Iterate through all symbols */
                cur_sym = gr->symbols;
                while (cur_sym) {
                        sym_obj = ucl_object_typed_new (UCL_OBJECT);
                        sym = cur_sym->data;
 
-                       sym_obj = ucl_object_insert_key (sym_obj, ucl_object_fromstring (sym->name),
+                       ucl_object_insert_key (sym_obj, ucl_object_fromstring (sym->name),
                                        "symbol", 0, false);
-                       sym_obj = ucl_object_insert_key (sym_obj, ucl_object_fromdouble (*sym->weight_ptr),
+                       ucl_object_insert_key (sym_obj, ucl_object_fromdouble (*sym->weight_ptr),
                                        "weight", 0, false);
                        if (sym->description) {
-                               sym_obj = ucl_object_insert_key (sym_obj, ucl_object_fromstring (sym->description),
+                               ucl_object_insert_key (sym_obj, ucl_object_fromstring (sym->description),
                                        "description", 0, false);
                        }
 
-                       obj = ucl_object_insert_key (obj, sym_obj, "rules", 0, false);
+                       ucl_object_insert_key (obj, sym_obj, "rules", 0, false);
                        cur_sym = g_list_next (cur_sym);
                }
                cur_gr = g_list_next (cur_gr);
-               top = ucl_array_append (top, obj);
+               ucl_array_append (top, obj);
        }
 
        rspamd_webui_send_ucl (conn_ent, top);
@@ -797,10 +797,10 @@ rspamd_webui_handle_actions (struct rspamd_http_connection_entry *conn_ent,
                        act = &metric->actions[i];
                        if (act->score > 0) {
                                obj = ucl_object_typed_new (UCL_OBJECT);
-                               obj = ucl_object_insert_key (obj,
+                               ucl_object_insert_key (obj,
                                                ucl_object_fromstring (str_action_metric (act->action)), "action", 0, false);
-                               obj = ucl_object_insert_key (obj, ucl_object_fromdouble (act->score), "value", 0, false);
-                               top = ucl_array_append (top, obj);
+                               ucl_object_insert_key (obj, ucl_object_fromdouble (act->score), "value", 0, false);
+                               ucl_array_append (top, obj);
                        }
                }
        }
@@ -857,13 +857,13 @@ rspamd_webui_handle_maps (struct rspamd_http_connection_entry *conn_ent,
                editable = (access (map->uri, W_OK) == 0);
 
                obj = ucl_object_typed_new (UCL_OBJECT);
-               obj = ucl_object_insert_key (obj, ucl_object_fromint (map->id),
+               ucl_object_insert_key (obj, ucl_object_fromint (map->id),
                                "map", 0, false);
-               obj = ucl_object_insert_key (obj, ucl_object_fromstring (map->description),
+               ucl_object_insert_key (obj, ucl_object_fromstring (map->description),
                                "description", 0, false);
-               obj = ucl_object_insert_key (obj, ucl_object_frombool (editable),
+               ucl_object_insert_key (obj, ucl_object_frombool (editable),
                                "editable", 0, false);
-               top = ucl_array_append (top, obj);
+               ucl_array_append (top, obj);
 
                cur = g_list_next (cur);
        }
@@ -1107,25 +1107,25 @@ rspamd_webui_handle_pie_chart (struct rspamd_http_connection_entry *conn_ent,
                data[2] = ctx->srv->stat->actions_stat[METRIC_ACTION_GREYLIST] / total * 100.;
                data[3] = ctx->srv->stat->actions_stat[METRIC_ACTION_REJECT] / total * 100.;
 
-               obj = ucl_array_append (obj, ucl_object_fromstring ("Clean messages"));
-               obj = ucl_array_append (obj, ucl_object_fromdouble (data[0]));
-               top = ucl_array_append (top, obj);
-               obj = ucl_array_append (obj, ucl_object_fromstring ("Probable spam messages"));
-               obj = ucl_array_append (obj, ucl_object_fromdouble (data[1]));
-               top = ucl_array_append (top, obj);
-               obj = ucl_array_append (obj, ucl_object_fromstring ("Greylisted messages"));
-               obj = ucl_array_append (obj, ucl_object_fromdouble (data[2]));
-               top = ucl_array_append (top, obj);
-               obj = ucl_array_append (obj, ucl_object_fromstring ("Rejected messages"));
-               obj = ucl_array_append (obj, ucl_object_fromdouble (data[3]));
-               top = ucl_array_append (top, obj);
+               ucl_array_append (obj, ucl_object_fromstring ("Clean messages"));
+               ucl_array_append (obj, ucl_object_fromdouble (data[0]));
+               ucl_array_append (top, obj);
+               ucl_array_append (obj, ucl_object_fromstring ("Probable spam messages"));
+               ucl_array_append (obj, ucl_object_fromdouble (data[1]));
+               ucl_array_append (top, obj);
+               ucl_array_append (obj, ucl_object_fromstring ("Greylisted messages"));
+               ucl_array_append (obj, ucl_object_fromdouble (data[2]));
+               ucl_array_append (top, obj);
+               ucl_array_append (obj, ucl_object_fromstring ("Rejected messages"));
+               ucl_array_append (obj, ucl_object_fromdouble (data[3]));
+               ucl_array_append (top, obj);
        }
        else {
                obj = ucl_object_typed_new (UCL_ARRAY);
 
-               obj = ucl_array_append (obj, ucl_object_fromstring ("Scanned messages"));
-               obj = ucl_array_append (obj, ucl_object_fromdouble (0));
-               top = ucl_array_append (top, obj);
+               ucl_array_append (obj, ucl_object_fromstring ("Scanned messages"));
+               ucl_array_append (obj, ucl_object_fromdouble (0));
+               ucl_array_append (top, obj);
        }
 
        rspamd_webui_send_ucl (conn_ent, top);
@@ -1195,20 +1195,20 @@ rspamd_webui_handle_history (struct rspamd_http_connection_entry *conn_ent,
                        rspamd_strlcpy (ip_buf, inet_ntoa (task->from_addr), sizeof (ip_buf));
 #endif
                        obj = ucl_object_typed_new (UCL_OBJECT);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromstring (timebuf), "time", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromstring (row->message_id), "id", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromstring (ip_buf), "ip", 0, false);
-                       obj = ucl_object_insert_key (obj,
+                       ucl_object_insert_key (obj, ucl_object_fromstring (timebuf), "time", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromstring (row->message_id), "id", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromstring (ip_buf), "ip", 0, false);
+                       ucl_object_insert_key (obj,
                                        ucl_object_fromstring (str_action_metric (row->action)), "action", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromdouble (row->score), "score", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromdouble (row->required_score), "required_score", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromstring (row->symbols), "symbols", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromint (row->len), "size", 0, false);
-                       obj = ucl_object_insert_key (obj, ucl_object_fromint (row->scan_time), "scan_time", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromdouble (row->score), "score", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromdouble (row->required_score), "required_score", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromstring (row->symbols), "symbols", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromint (row->len), "size", 0, false);
+                       ucl_object_insert_key (obj, ucl_object_fromint (row->scan_time), "scan_time", 0, false);
                        if (row->user[0] != '\0') {
-                               obj = ucl_object_insert_key (obj, ucl_object_fromstring (row->user), "user", 0, false);
+                               ucl_object_insert_key (obj, ucl_object_fromstring (row->user), "user", 0, false);
                        }
-                       top = ucl_array_append (top, obj);
+                       ucl_array_append (top, obj);
                        rows_proc ++;
                }
        }