]> source.dussan.org Git - rspamd.git/commitdiff
add milter multiple signature support
authorJohn McKay <adenosine3p@gmail.com>
Sat, 2 Feb 2019 11:24:17 +0000 (11:24 +0000)
committerJohn McKay <adenosine3p@gmail.com>
Sat, 2 Feb 2019 11:24:17 +0000 (11:24 +0000)
src/libserver/milter.c

index 03aef8298c5b1a841b9034ce9c8b54fa6ea47b7d..b3cd4622674cd376696b9926b683ef630d3e6272 100644 (file)
@@ -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) {