]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Lua_mime: Flatten headers array
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 27 Nov 2021 14:21:08 +0000 (14:21 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sat, 27 Nov 2021 14:58:13 +0000 (14:58 +0000)
lualib/lua_mime.lua

index fe82fb717285a17c8a2f9477ba59abcb29f706cf..f248dec7a2fe709bfec385e9390fcc3b093ef2e9 100644 (file)
@@ -579,13 +579,26 @@ end
 exports.message_to_ucl = function(task, stringify_content)
   local E = {}
 
+  local function flatten_headers(hdrs)
+    local res = {}
+
+    for _,e in ipairs(hdrs) do
+      if type(e) == 'table' and e[1] then
+        for _,h in ipairs(e) do table.insert(res, h) end
+      else
+        table.insert(res, e)
+      end
+    end
+
+    return res
+  end
   local maybe_stringify_f = stringify_content and
     tostring or function(t) return t  end
   local result = {
     size = task:get_size(),
     digest = task:get_digest(),
     newlines = task:get_newlines_type(),
-    headers = task:get_headers(true) or E
+    headers = flatten_headers(task:get_headers(true) or E)
   }
 
   -- Utility to convert ip addr to a string or nil if invalid/absent
@@ -617,7 +630,7 @@ exports.message_to_ucl = function(task, stringify_content)
         detected_type = string.format('%s/%s', part:get_detected_type()),
         filename = part:get_filename(),
         content = maybe_stringify_f(part:get_content()),
-        headers =  part:get_headers(true) or E,
+        headers =  flatten_headers(part:get_headers(true) or E),
         boundary = part:get_enclosing_boundary()
       }
       table.insert(result.parts, p)