summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lualib/lua_redis.lua17
1 files changed, 16 insertions, 1 deletions
diff --git a/lualib/lua_redis.lua b/lualib/lua_redis.lua
index fa7d52992..a34adff6b 100644
--- a/lualib/lua_redis.lua
+++ b/lualib/lua_redis.lua
@@ -1422,21 +1422,36 @@ local function redis_connect_sync(redis_params, is_write, key, cfg, ev_base)
local ret,conn = rspamd_redis.connect_sync(options)
if not ret then
- logger.errx('cannot execute redis request: %s', conn)
+ logger.errx('cannot create redis connection: %s', conn)
addr:fail()
return false,nil,addr
end
if conn then
+ local need_exec = false
if redis_params['password'] then
conn:add_cmd('AUTH', {redis_params['password']})
+ need_exec = true
end
if redis_params['db'] then
conn:add_cmd('SELECT', {tostring(redis_params['db'])})
+ need_exec = true
elseif redis_params['dbname'] then
conn:add_cmd('SELECT', {tostring(redis_params['dbname'])})
+ need_exec = true
+ end
+
+ if need_exec then
+ local exec_ret, res = conn:exec()
+
+ if not exec_ret then
+ logger.errx('cannot prepare redis connection (authentication or db selection failure): %s',
+ res)
+ addr:fail()
+ return false,nil,addr
+ end
end
end