aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua/lua_redis.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/lua_redis.c')
-rw-r--r--src/lua/lua_redis.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/lua/lua_redis.c b/src/lua/lua_redis.c
index 1eedde277..55a85d22d 100644
--- a/src/lua/lua_redis.c
+++ b/src/lua/lua_redis.c
@@ -135,6 +135,7 @@ lua_redis_dtor (struct lua_redis_ctx *ctx)
{
struct lua_redis_userdata *ud;
struct lua_redis_specific_userdata *cur, *tmp;
+ gboolean is_connected = FALSE;
if (ctx->async) {
ud = &ctx->d.async;
@@ -149,10 +150,14 @@ lua_redis_dtor (struct lua_redis_ctx *ctx)
ctx->ref.refcount = 100500;
redisAsyncFree (ud->ctx);
ctx->ref.refcount = 0;
+ is_connected = TRUE;
}
LL_FOREACH_SAFE (ud->specific, cur, tmp) {
lua_redis_free_args (cur->args, cur->nargs);
- event_del (&cur->timeout);
+
+ if (is_connected) {
+ event_del (&cur->timeout);
+ }
if (cur->cbref != -1) {
luaL_unref (ud->L, LUA_REGISTRYINDEX, cur->cbref);