]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Distinguish absent IP address in a more sane way
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 11 Oct 2019 08:57:20 +0000 (09:57 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Fri, 11 Oct 2019 08:57:20 +0000 (09:57 +0100)
src/lua/lua_task.c
src/plugins/lua/dmarc.lua
src/plugins/lua/rbl.lua
src/plugins/lua/settings.lua

index b04596ed3530eac51f0f1f85e1847d7d3b60df2c..97523a1fac2c0d4e3defbbf40ebc0bbe01d33895 100644 (file)
@@ -3843,7 +3843,12 @@ lua_task_get_from_ip (lua_State *L)
        struct rspamd_task *task = lua_check_task (L, 1);
 
        if (task) {
-               rspamd_lua_ip_push (L, task->from_addr);
+               if (task->from_addr) {
+                       rspamd_lua_ip_push (L, task->from_addr);
+               }
+               else {
+                       lua_pushnil (L);
+               }
        }
        else {
                return luaL_error (L, "invalid arguments");
@@ -3901,7 +3906,12 @@ lua_task_get_client_ip (lua_State *L)
        struct rspamd_task *task = lua_check_task (L, 1);
 
        if (task) {
-               rspamd_lua_ip_push (L, task->client_addr);
+               if (task->client_addr) {
+                       rspamd_lua_ip_push (L, task->client_addr);
+               }
+               else {
+                       lua_pushnil (L);
+               }
        }
        else {
                return luaL_error (L, "invalid arguments");
index f922f63d29a4554ebb6ebd375d7cf8f6bd2c5e24..ab8a3bf537329ec6a318f031e6a82cbc0551d856 100644 (file)
@@ -181,7 +181,7 @@ local dmarc_grammar = gen_dmarc_grammar()
 local function dmarc_report(task, spf_ok, dkim_ok, disposition,
     sampled_out, hfromdom, spfdom, dres, spf_result)
   local ip = task:get_from_ip()
-  if not ip:is_valid() then
+  if ip and not ip:is_valid() then
     return nil
   end
   local rspamd_lua_utils = require "lua_util"
index 7016d9c5ea4b3cd2cb676eb19c55155f007657bb..f66186fa6ff52b0055db9d2d711c494bc7f6e85c 100644 (file)
@@ -391,7 +391,7 @@ local function gen_rbl_callback(rule)
   local function check_local(task, _)
     local ip = task:get_from_ip()
 
-    if not ip:is_valid() then
+    if ip and not ip:is_valid() then
       ip = nil
     end
 
index 5fe2353d48952c8aa4c4b0c0caa79c293c99a1c9..0f895dc0b59b309d00ad2fa5b78ba1da300c880b 100644 (file)
@@ -552,7 +552,7 @@ local function process_settings_table(tbl, allow_ids, mempool)
           check = gen_check_closure(convert_to_table(elt.ip, ips_table), check_ip_setting),
           extract = function(task)
             local ip = task:get_from_ip()
-            if ip:is_valid() then return ip end
+            if ip and ip:is_valid() then return ip end
             return nil
           end,
         }