diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-22 14:08:26 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-03-22 14:08:26 +0000 |
commit | 7849cfa0767a48fd6cfbf0b41f5a42c4352a0e87 (patch) | |
tree | 6c4911652b9bea8e5fe4f49afd522e78b93b1617 /src/libserver/protocol.c | |
parent | 532914ab6ccbff8ab1105e7883d2ea008858bd5a (diff) | |
download | rspamd-7849cfa0767a48fd6cfbf0b41f5a42c4352a0e87.tar.gz rspamd-7849cfa0767a48fd6cfbf0b41f5a42c4352a0e87.zip |
[Fix] Preserve order of options in symbols
Diffstat (limited to 'src/libserver/protocol.c')
-rw-r--r-- | src/libserver/protocol.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index dfc590a78..d9e4f9b7b 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -26,6 +26,7 @@ #include "worker_private.h" #include "cryptobox.h" #include "contrib/zstd/zstd.h" +#include "contrib/uthash/utlist.h" #include "lua/lua_common.h" #include "unix-std.h" #include <math.h> @@ -857,8 +858,9 @@ static ucl_object_t * rspamd_metric_symbol_ucl (struct rspamd_task *task, struct rspamd_metric *m, struct rspamd_symbol_result *sym) { - ucl_object_t *obj = NULL; + ucl_object_t *obj = NULL, *ar; const gchar *description = NULL; + struct rspamd_symbol_option *opt; if (sym->sym != NULL) { description = sym->sym->description; @@ -874,8 +876,13 @@ rspamd_metric_symbol_ucl (struct rspamd_task *task, struct rspamd_metric *m, description), "description", 0, false); } if (sym->options != NULL) { - ucl_object_insert_key (obj, rspamd_str_hash_ucl (sym->options), - "options", 0, false); + ar = ucl_object_typed_new (UCL_ARRAY); + + DL_FOREACH (sym->opts_head, opt) { + ucl_array_append (ar, ucl_object_fromstring (opt->option)); + } + + ucl_object_insert_key (obj, ar, "options", 0, false); } return obj; |