From 8fb2e907d41b71464a147e5e962f0f39d6a24b24 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 5 Jan 2017 11:17:44 +0000 Subject: [PATCH] [Minor] Add `compat_messages` for compatibility with legacy protocol MFH: true --- src/libserver/cfg_file.h | 5 +---- src/libserver/cfg_rcl.c | 6 ++++++ src/libserver/protocol.c | 19 ++++++++++++++++++- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h index 4da641953c..3be0c7c4d7 100644 --- a/src/libserver/cfg_file.h +++ b/src/libserver/cfg_file.h @@ -332,6 +332,7 @@ struct rspamd_config { guint log_error_elt_maxlen; /**< maximum size of error log element */ gboolean mlock_statfile_pool; /**< use mlock (2) for locking statfiles */ + gboolean compat_messages; /**< use old messages in the protocol (array) */ gboolean delivery_enable; /**< is delivery agent is enabled */ gchar *deliver_host; /**< host for mail deliviring */ @@ -379,13 +380,9 @@ struct rspamd_config { gpointer lua_state; /**< pointer to lua state */ gchar * rrd_file; /**< rrd file to store statistics */ - gchar * history_file; /**< file to save rolling history */ - gchar * tld_file; /**< file to load effective tld list from */ - gchar * hs_cache_dir; /**< directory to save hyperscan databases */ - gchar * magic_file; /**< file to initialize libmagic */ gdouble dns_timeout; /**< timeout in milliseconds for waiting for dns reply */ diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 076887dd99..20dc7ea606 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -2025,6 +2025,12 @@ rspamd_rcl_config_init (struct rspamd_config *cfg) G_STRUCT_OFFSET (struct rspamd_config, zstd_output_dictionary), RSPAMD_CL_FLAG_STRING_PATH, "Dictionary for outbound zstd compression"); + rspamd_rcl_add_default_handler (sub, + "compat_messages", + rspamd_rcl_parse_struct_boolean, + G_STRUCT_OFFSET (struct rspamd_config, compat_messages), + 0, + "Use pre 1.4 style of messages in the protocol"); /* New DNS configuration */ ssub = rspamd_rcl_add_section_doc (&sub->subsections, "dns", NULL, NULL, diff --git a/src/libserver/protocol.c b/src/libserver/protocol.c index 566f7bc4b3..668c21ee29 100644 --- a/src/libserver/protocol.c +++ b/src/libserver/protocol.c @@ -1044,8 +1044,25 @@ rspamd_protocol_write_ucl (struct rspamd_task *task) ucl_object_insert_key (top, obj, h, 0, false); } - ucl_object_insert_key (top, ucl_object_ref (task->messages), + if (G_UNLIKELY (task->cfg->compat_messages)) { + const ucl_object_t *cur; + ucl_object_t *msg_object; + ucl_object_iter_t iter = NULL; + + msg_object = ucl_object_typed_new (UCL_ARRAY); + + while ((cur = ucl_object_iterate (task->messages, &iter, true)) != NULL) { + if (cur->type == UCL_STRING) { + ucl_array_append (msg_object, ucl_object_ref (cur)); + } + } + + ucl_object_insert_key (top, msg_object, "messages", 0, false); + } + else { + ucl_object_insert_key (top, ucl_object_ref (task->messages), "messages", 0, false); + } if (task->cfg->log_urls || (task->flags & RSPAMD_TASK_FLAG_EXT_URLS)) { if (g_hash_table_size (task->urls) > 0) { -- 2.47.3