commit 02db3e2: [Fix] Fix synchronous auth/select in lua_redis

Vsevolod Stakhov vsevolod at rspamd.com
Wed Aug 31 22:35:03 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-08-31 23:25:02 +0100
URL: https://github.com/rspamd/rspamd/commit/02db3e291d9b1301faa052af992ee923e2d266e3 (HEAD -> master)

[Fix] Fix synchronous auth/select in lua_redis
Issue: #4255

---
 lualib/lua_redis.lua | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

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
 


More information about the Commits mailing list