From: Vsevolod Stakhov Date: Wed, 3 Dec 2014 12:37:48 +0000 (+0000) Subject: Avoid descriptors leak in lua_http. X-Git-Tag: 0.8.0~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ac4f36baa1657ebfd0ebe39ff691fa64fd3e5884;p=thirdparty%2Frspamd.git Avoid descriptors leak in lua_http. --- diff --git a/src/lua/lua_http.c b/src/lua/lua_http.c index 12b0072d37..1d5e3bcf89 100644 --- a/src/lua/lua_http.c +++ b/src/lua/lua_http.c @@ -45,6 +45,7 @@ struct lua_http_cbdata { struct event_base *ev_base; struct timeval tv; rspamd_inet_addr_t addr; + gint fd; gint cbref; }; @@ -77,6 +78,10 @@ lua_http_fin (gpointer arg) rspamd_http_message_free (cbd->msg); } + if (cbd->fd != -1) { + close (cbd->fd); + } + g_slice_free1 (sizeof (struct lua_http_cbdata), cbd); } @@ -151,6 +156,7 @@ lua_http_make_connection (struct lua_http_cbdata *cbd) msg_info ("cannot connect to %v", cbd->msg->host); return FALSE; } + cbd->fd = fd; cbd->conn = rspamd_http_connection_new (NULL, lua_http_error_handler, lua_http_finish_handler, RSPAMD_HTTP_CLIENT_SIMPLE, RSPAMD_HTTP_CLIENT); @@ -333,6 +339,7 @@ lua_http_request (lua_State *L) cbd->msg = msg; cbd->ev_base = ev_base; msec_to_tv (timeout, &cbd->tv); + cbd->fd = -1; if (session) { cbd->session = session; register_async_event (session,