]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Move upstream handling into rspamd_redis_make_request 1142/head
authorAndrew Lewis <nerf@judo.za.org>
Wed, 16 Nov 2016 14:06:36 +0000 (16:06 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Wed, 16 Nov 2016 14:06:36 +0000 (16:06 +0200)
src/lua/global_functions.lua
src/plugins/lua/antivirus.lua
src/plugins/lua/asn.lua
src/plugins/lua/fann_classifier.lua
src/plugins/lua/greylist.lua
src/plugins/lua/metadata_exporter.lua
src/plugins/lua/mx_check.lua
src/plugins/lua/ratelimit.lua

index 879309011189135282516786028468ecc291eee2..31ee6c8c4eb8d8b1d122704390831bdde5814b02 100644 (file)
@@ -111,11 +111,19 @@ end
 -- command - redis command
 -- args - table of arguments
 function rspamd_redis_make_request(task, redis_params, key, is_write, callback, command, args)
+  local addr
+  local function rspamd_redis_make_request_cb(err, data)
+    if err then
+      addr:fail()
+    else
+      addr:ok()
+    end
+    callback(err, data, addr)
+  end
   if not task or not redis_params or not callback or not command then
     return false,nil,nil
   end
 
-  local addr
   local rspamd_redis = require "rspamd_redis"
 
   if key then
@@ -138,7 +146,7 @@ function rspamd_redis_make_request(task, redis_params, key, is_write, callback,
 
   local options = {
     task = task,
-    callback = callback,
+    callback = rspamd_redis_make_request_cb,
     host = addr:get_addr(),
     timeout = redis_params['timeout'],
     cmd = command,
index 91ac61af691720a1632a7898dac480fcad10f4f4..0ae2170b65200678a8c77d4a604802b966712c11 100644 (file)
@@ -274,10 +274,8 @@ local function fprot_check(task, rule)
           end
         else
           rspamd_logger.errx(task, 'failed to scan: %s', err)
-          upstream:fail()
         end
       else
-        upstream:ok()
 
         data = tostring(data)
         local found = (string.sub(data, 1, 1) == '1')
@@ -340,10 +338,8 @@ local function clamav_check(task, rule)
           end
         else
           rspamd_logger.errx(task, 'failed to scan: %s', err)
-          upstream:fail()
         end
       else
-        upstream:ok()
 
         data = tostring(data)
         local s = string.find(data, ' FOUND')
@@ -405,10 +401,8 @@ local function sophos_check(task, rule)
           end
         else
           rspamd_logger.errx(task, 'failed to scan: %s', err)
-          upstream:fail()
         end
       else
-        upstream:ok()
 
         data = tostring(data)
         local vname = string.match(data, 'VIRUS (%S+) ')
index dccaf43d76e3ef09353dcf027bddebfc5c65353c..9cb109fbf40b13fea881a7db624cb78f7c604d45 100644 (file)
@@ -68,12 +68,9 @@ local function asn_check(task)
         local redis_key = options.key_prefix .. ip:to_string()
         local ret,conn,upstream
         local function redis_asn_set_cb(redis_err)
-          if not redis_err then
-            upstream:ok()
-          else
+          if redis_err then
             rspamd_logger.errx(task, 'got error %s when setting asn record on server %s',
               redis_err, upstream:get_addr())
-            upstream:fail()
           end
         end
         ret,conn,upstream = rspamd_redis_make_request(task,
index ba41040e9f0a9764b91c51a98447ae12ee0d37c8..94261839b15b609d1b203c3c05d058890bd1538a 100644 (file)
@@ -98,9 +98,6 @@ local function maybe_load_fann(task, continue_cb, call_if_fail)
     local function redis_fann_check_cb(err, data)
       if err then
         rspamd_logger.errx(task, 'redis error on host %s: %s', upstream:get_addr(), err)
-        upstream:fail()
-      else
-        upstream:ok()
       end
       if not err and type(data) == 'string' then
         local version = tonumber(data)
@@ -187,13 +184,9 @@ local function create_fann()
 end
 
 local function save_fann(task, is_spam)
-  local ret, conn, upstream
   local function redis_fann_save_cb(err)
     if err then
       rspamd_logger.errx(task, "cannot save neural net to redis: %s", err)
-      upstream:fail()
-    else
-      upstream:ok()
     end
   end
 
@@ -206,7 +199,7 @@ local function save_fann(task, is_spam)
   else
     current_classify_ann.ham_learned = current_classify_ann.ham_learned + 1
   end
-  ret,conn,upstream = rspamd_redis_make_request(task,
+  local ret,conn = rspamd_redis_make_request(task,
     redis_params, -- connect params
     key, -- hash key
     true, -- is write
index 36819e1d0f9a43c56bd5a7d495939030993aed10..7a84e46f39057e69c1e352624a0dcb470edd94b8 100644 (file)
@@ -161,7 +161,6 @@ local function greylist_check(task)
   local body_key = data_key(task)
   local meta_key = envelope_key(task)
   local hash_key = body_key .. meta_key
-  local upstream
 
   local function redis_get_cb(err, data)
     local ret_body = false
@@ -209,14 +208,11 @@ local function greylist_check(task)
       end
     elseif err then
       rspamd_logger.errx(task, 'got error while getting greylisting keys: %1', err)
-      upstream:fail()
       return
     end
-    upstream:ok()
   end
 
-  local ret, _
-  ret,_,upstream = rspamd_redis_make_request(task,
+  local ret = rspamd_redis_make_request(task,
     redis_params, -- connect params
     hash_key, -- hash key
     false, -- is write
@@ -269,12 +265,9 @@ local function greylist_set(task)
   local hash_key = body_key .. meta_key
 
   local function redis_set_cb(err)
-    if not err then
-      upstream:ok()
-    else
+    if err then
       rspamd_logger.errx(task, 'got error %s when setting greylisting record on server %s',
           err, upstream:get_addr())
-      upstream:fail()
     end
   end
 
index d2c0fa620b7dcb786315524815cb26d6da591189..e95478b48ca36185307dd0c0c8ff397b19a85c19 100644 (file)
@@ -69,9 +69,6 @@ local function metadata_exporter(task)
     if err then
       rspamd_logger.errx(task, 'got error %s when publishing record on server %s',
           err, upstream:get_addr())
-      upstream:fail()
-    else
-      upstream:ok()
     end
   end
   if settings.select then
index f5a44bc4e1a20d28145954751e49ca13edb0941d..c81fd0dd6f978bf483d46f3fa21917db57d27980 100644 (file)
@@ -55,7 +55,6 @@ local function mx_check(task)
   end
 
   local valid = false
-  local ret,_,upstream
 
   local function check_results(mxes)
     if fun.all(function(_, elt) return elt.checked end, mxes) then
@@ -64,10 +63,7 @@ local function mx_check(task)
       local function redis_cache_cb(err)
         if err ~= nil then
           rspamd_logger.errx(task, 'redis_cache_cb received error: %1', err)
-          upstream:fail()
           return
-        else
-          upstream:ok()
         end
       end
       if not valid then
@@ -81,7 +77,7 @@ local function mx_check(task)
         else
           task:insert_result(settings.symbol_bad_mx, 1.0)
         end
-        ret,_,upstream = rspamd_redis_make_request(task,
+        local ret = rspamd_redis_make_request(task,
           redis_params, -- connect params
           key, -- hash key
           false, -- is write
@@ -98,7 +94,7 @@ local function mx_check(task)
           table.insert(valid_mx, k)
         end, fun.filter(function (_, elt) return elt.working end, mxes))
         task:insert_result(settings.symbol_good_mx, 1.0, valid_mx)
-        ret,_,upstream = rspamd_redis_make_request(task,
+        local ret = rspamd_redis_make_request(task,
           redis_params, -- connect params
           key, -- hash key
           false, -- is write
@@ -228,7 +224,7 @@ local function mx_check(task)
     end
 
     local key = settings.key_prefix .. mx_domain
-    ret,_,upstream = rspamd_redis_make_request(task,
+    local ret = rspamd_redis_make_request(task,
       redis_params, -- connect params
       key, -- hash key
       false, -- is write
@@ -238,7 +234,6 @@ local function mx_check(task)
     )
 
     if not ret then
-      upstream:fail()
       local r = task:get_resolver()
       r:resolve('mx', {
         name = mx_domain,
index f15d8633ef153bb08aa47412eda9ecfbb1a93ffb..1a7bdf222ddc6eb17e8301c12093e4ebeb6dc95a 100644 (file)
@@ -207,14 +207,11 @@ end
 local function check_limits(task, args)
 
   local key = fun.foldl(function(acc, k) return acc .. k[2] end, '', args)
-  local ret,upstream
+  local ret
   --- Called when value is got from server
   local function rate_get_cb(err, data)
     if err then
       rspamd_logger.infox(task, 'got error while getting limit: %1', err)
-      upstream:fail()
-    else
-      upstream:ok()
     end
     if not data then return end
     local ntime = rspamd_util.get_time()
@@ -298,8 +295,7 @@ local function check_limits(task, args)
       fun.map(function(a) return rspamd_str_split(a[2], ":")[2] end, args)))
   end
 
-  local _
-  ret,_,upstream = rspamd_redis_make_request(task,
+  ret = rspamd_redis_make_request(task,
     redis_params, -- connect params
     key, -- hash key
     false, -- is write
@@ -318,9 +314,7 @@ local function set_limits(task, args)
   local ret, upstream
 
   local function rate_set_cb(err)
-    if not err then
-      upstream:ok()
-    else
+    if err then
       rspamd_logger.infox(task, 'got error %s when setting ratelimit record on server %s',
         err, upstream:get_addr())
     end
@@ -328,7 +322,6 @@ local function set_limits(task, args)
   local function rate_get_cb(err, data)
     if err then
       rspamd_logger.infox(task, 'got error while setting limit: %1', err)
-      upstream:fail()
     end
     if not data then return end
     local ntime = rspamd_util.get_time()