From f433c028e15aa214c0e119c73c8d02a22d8a30da Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Tue, 16 Aug 2016 09:55:37 +0100 Subject: [PATCH] [Fix] Avoid setting limits when required elements are missing --- src/plugins/lua/ratelimit.lua | 40 ++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index f6ac4893c..1b0ec4f7a 100644 --- a/src/plugins/lua/ratelimit.lua +++ b/src/plugins/lua/ratelimit.lua @@ -196,27 +196,29 @@ local function set_limits(task, args) table.insert(values, {limit[2], max_delay, lstr}) end, fun.zip(parse_limits(data), fun.iter(args))) - local conn - ret,conn,upstream = rspamd_redis_make_request(task, - redis_params, -- connect params - key, -- hash key - true, -- is write - rate_set_cb, --callback - 'setex', -- command - values[1] -- arguments - ) - - if conn then - fun.each(function(v) - conn:add_cmd('setex', v) - end, fun.drop_n(1, values)) - else - rspamd_logger.infox(task, 'got error while connecting to redis: %1', addr) + if #values > 0 then + local conn + ret,conn,upstream = rspamd_redis_make_request(task, + redis_params, -- connect params + key, -- hash key + true, -- is write + rate_set_cb, --callback + 'setex', -- command + values[1] -- arguments + ) + + if conn then + fun.each(function(v) + conn:add_cmd('setex', v) + end, fun.drop_n(1, values)) + else + rspamd_logger.infox(task, 'got error while connecting to redis: %1', addr) + upstream:fail() + end + elseif err then + rspamd_logger.infox(task, 'got error while setting limit: %1', err) upstream:fail() end - elseif err then - rspamd_logger.infox(task, 'got error while setting limit: %1', err) - upstream:fail() end end -- 2.39.5