diff options
Diffstat (limited to 'src/lua/lua_redis.c')
-rw-r--r-- | src/lua/lua_redis.c | 7 |
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); |