]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Try to fix redis crashes
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 5 May 2016 08:27:20 +0000 (09:27 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 5 May 2016 08:27:20 +0000 (09:27 +0100)
src/lua/lua_redis.c

index 2e19cc4d4c5fdefffac9845320f7b3c19639fc56..2354096676fbcb3b1a9e4e165a3aaf6ad19135e8 100644 (file)
@@ -319,6 +319,7 @@ lua_redis_callback (redisAsyncContext *c, gpointer r, gpointer priv)
                return;
        }
 
+       REF_RETAIN (ctx);
        event_del (&sp_ud->timeout);
        ctx->cmds_pending --;
 
@@ -354,6 +355,8 @@ lua_redis_callback (redisAsyncContext *c, gpointer r, gpointer priv)
                        redisAsyncFree (ac);
                }
        }
+
+       REF_RELEASE (ctx);
 }
 
 static void
@@ -364,6 +367,8 @@ lua_redis_timeout (int fd, short what, gpointer u)
        redisAsyncContext *ac;
 
        ctx = sp_ud->ctx;
+
+       REF_RETAIN (ctx);
        msg_info ("timeout while querying redis server");
        lua_redis_push_error ("timeout while connecting the server", ctx, sp_ud, FALSE);
 
@@ -375,8 +380,10 @@ lua_redis_timeout (int fd, short what, gpointer u)
                 * This will call all callbacks pending so the entire context
                 * will be destructed
                 */
+               sp_ud->c->terminated = 1;
                redisAsyncFree (ac);
        }
+       REF_RELEASE (ctx);
 }