From: Vsevolod Stakhov Date: Tue, 16 Aug 2016 08:55:37 +0000 (+0100) Subject: [Fix] Avoid setting limits when required elements are missing X-Git-Tag: 1.3.4~46 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f433c028e15aa214c0e119c73c8d02a22d8a30da;p=thirdparty%2Frspamd.git [Fix] Avoid setting limits when required elements are missing --- diff --git a/src/plugins/lua/ratelimit.lua b/src/plugins/lua/ratelimit.lua index f6ac4893cd..1b0ec4f7ad 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