diff options
-rw-r--r-- | lualib/lua_redis.lua | 17 |
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 |