]> source.dussan.org Git - rspamd.git/commitdiff
rules/headers_checks.lua: make CHECK_FROM callback a bit more efficient
authorJan Smutny <js@excello.cz>
Sat, 18 Apr 2020 19:17:06 +0000 (21:17 +0200)
committerJan Smutny <js@excello.cz>
Sat, 18 Apr 2020 22:22:14 +0000 (00:22 +0200)
rules/headers_checks.lua

index ae5c6183678316c4b4f6b8c2f78f67cc35e95932..9ceb601885e04be5f791b35da39c0c11d9b1768a 100644 (file)
@@ -626,33 +626,35 @@ local check_from_id = rspamd_config:register_symbol{
   callback = function(task)
     local envfrom = task:get_from(1)
     local from = task:get_from(2)
-    if (from and from[1] and (from[1].name == nil or from[1].name == '' )) then
-      task:insert_result('FROM_NO_DN', 1.0)
-    elseif (from and from[1] and from[1].name and
+    if (from and from[1]) then
+      if (from[1].name == nil or from[1].name == '' ) then
+        task:insert_result('FROM_NO_DN', 1.0)
+      elseif (from[1].name and
             util.strequal_caseless(from[1].name, from[1].addr)) then
-      task:insert_result('FROM_DN_EQ_ADDR', 1.0)
-    elseif (from and from[1] and from[1].name and from[1].name ~= '') then
-      task:insert_result('FROM_HAS_DN', 1.0)
-      -- Look for Mr/Mrs/Dr titles
-      local n = from[1].name:lower()
-      local match, match_end
-      match, match_end = n:find('^mrs?[%.%s]')
-      if match then
-        task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
-      end
-      match, match_end = n:find('^dr[%.%s]')
-      if match then
-        task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
-      end
-      -- Check for excess spaces
-      if n:find('%s%s') then
-        task:insert_result('FROM_NAME_EXCESS_SPACE', 1.0)
+        task:insert_result('FROM_DN_EQ_ADDR', 1.0)
+      elseif (from[1].name and from[1].name ~= '') then
+        task:insert_result('FROM_HAS_DN', 1.0)
+        -- Look for Mr/Mrs/Dr titles
+        local n = from[1].name:lower()
+        local match, match_end
+        match, match_end = n:find('^mrs?[%.%s]')
+        if match then
+          task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
+        end
+        match, match_end = n:find('^dr[%.%s]')
+        if match then
+          task:insert_result('FROM_NAME_HAS_TITLE', 1.0, n:sub(match, match_end-1))
+        end
+        -- Check for excess spaces
+        if n:find('%s%s') then
+          task:insert_result('FROM_NAME_EXCESS_SPACE', 1.0)
+        end
       end
-    end
-    if (envfrom and from and envfrom[1] and from[1] and
+      if (envfrom and envfrom[1] and
         util.strequal_caseless(envfrom[1].addr, from[1].addr))
-    then
-      task:insert_result('FROM_EQ_ENVFROM', 1.0)
+      then
+        task:insert_result('FROM_EQ_ENVFROM', 1.0)
+      end
     elseif (envfrom and envfrom[1] and envfrom[1].addr) then
       task:insert_result('FROM_NEQ_ENVFROM', 1.0, ((from or E)[1] or E).addr or '', envfrom[1].addr)
     end