From: Vsevolod Stakhov Date: Thu, 24 Nov 2016 10:05:14 +0000 (+0000) Subject: [Fix] Fix memory leak for task-less redis requests X-Git-Tag: 1.4.1~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbc608a75432e9e7f088cdc5ac50ce05d2c0ec7f;p=thirdparty%2Frspamd.git [Fix] Fix memory leak for task-less redis requests --- diff --git a/src/lua/lua_redis.c b/src/lua/lua_redis.c index 279c58c5b4..3566c7e116 100644 --- a/src/lua/lua_redis.c +++ b/src/lua/lua_redis.c @@ -600,12 +600,6 @@ rspamd_lua_redis_prepare_connection (lua_State *L, gint *pcbref) if (rspamd_inet_address_get_port (ip) == 0) { rspamd_inet_address_set_port (ip, 6379); } - - if (task) { - rspamd_mempool_add_destructor (task->task_pool, - (rspamd_mempool_destruct_t)rspamd_inet_address_destroy, - ip); - } } } lua_pop (L, 1); @@ -655,6 +649,10 @@ rspamd_lua_redis_prepare_connection (lua_State *L, gint *pcbref) rspamd_inet_address_to_string (addr->addr), rspamd_inet_address_get_port (addr->addr)); + if (ip) { + rspamd_inet_address_destroy (ip); + } + if (ud->ctx == NULL || ud->ctx->err) { if (ud->ctx) { msg_err_task_check ("cannot connect to redis: %s", @@ -675,6 +673,10 @@ rspamd_lua_redis_prepare_connection (lua_State *L, gint *pcbref) return ctx; } + if (ip) { + rspamd_inet_address_destroy (ip); + } + return NULL; }