aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-05 11:22:23 +0000
committerGitHub <noreply@github.com>2017-01-05 11:22:23 +0000
commit92f528b62a4ab4cfe64222913b516a8193f9a9c1 (patch)
tree2bd0fe495077265ccbb2f284933ac615470d7d65
parent153ad9b6666c7a83462ea0fbd5ffd5cccd678968 (diff)
parentf69bea8e4402d07385c49b087d25082d35676ae6 (diff)
downloadrspamd-92f528b62a4ab4cfe64222913b516a8193f9a9c1.tar.gz
rspamd-92f528b62a4ab4cfe64222913b516a8193f9a9c1.zip
Merge pull request #1313 from fatalbanana/rspamd-1.4
[Minor] Add `compat_messages` for compatibility with legacy protocol
-rw-r--r--src/libserver/cfg_file.h5
-rw-r--r--src/libserver/cfg_rcl.c6
-rw-r--r--src/libserver/protocol.c19
3 files changed, 25 insertions, 5 deletions
diff --git a/src/libserver/cfg_file.h b/src/libserver/cfg_file.h
index ea75622f8..362395fc6 100644
--- a/src/libserver/cfg_file.h
+++ b/src/libserver/cfg_file.h
@@ -330,6 +330,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 */
@@ -377,13 +378,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 7737b7b96..fecc7e819 100644
--- a/src/libserver/cfg_rcl.c
+++ b/src/libserver/cfg_rcl.c
@@ -2028,6 +2028,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 f33422dfe..c864ce567 100644
--- a/src/libserver/protocol.c
+++ b/src/libserver/protocol.c
@@ -1022,8 +1022,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) {