From: John McKay Date: Sat, 2 Feb 2019 11:24:17 +0000 (+0000) Subject: add milter multiple signature support X-Git-Tag: 1.9.0~220^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2349c384e084848de73949f0f8628014913275a0;p=thirdparty%2Frspamd.git add milter multiple signature support --- diff --git a/src/libserver/milter.c b/src/libserver/milter.c index 03aef8298c..b3cd462267 100644 --- a/src/libserver/milter.c +++ b/src/libserver/milter.c @@ -1841,12 +1841,35 @@ rspamd_milter_send_task_results (struct rspamd_milter_session *session, if (elt) { hname = g_string_new (RSPAMD_MILTER_DKIM_HEADER); - hvalue = g_string_new (ucl_object_tostring (elt)); - rspamd_milter_send_action (session, RSPAMD_MILTER_INSHEADER, - 1, hname, hvalue); + if (ucl_object_type (elt) == UCL_STRING) { + hvalue = g_string_new (ucl_object_tostring (elt)); + + rspamd_milter_send_action (session, RSPAMD_MILTER_INSHEADER, + 1, hname, hvalue); + + g_string_free (hvalue, TRUE); + } + else { + ucl_object_iter_t it; + const ucl_object_t *cur; + int i = 1; + + it = ucl_object_iterate_new (elt); + + while ((cur = ucl_object_iterate_safe (it, true)) != NULL) { + hvalue = g_string_new (ucl_object_tostring (cur)); + + rspamd_milter_send_action (session, RSPAMD_MILTER_INSHEADER, + i++, hname, hvalue); + + g_string_free (hvalue, TRUE); + } + + ucl_object_iterate_free (it); + } + g_string_free (hname, TRUE); - g_string_free (hvalue, TRUE); } if (processed) {