aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2014-12-03 12:37:48 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2014-12-03 12:37:48 +0000
commitac4f36baa1657ebfd0ebe39ff691fa64fd3e5884 (patch)
treee6617d8582c3b278ad0f808c23430bd21513e214
parent98c3c22dcd7d5bc6c4da9730e31006349ea90f82 (diff)
downloadrspamd-ac4f36baa1657ebfd0ebe39ff691fa64fd3e5884.tar.gz
rspamd-ac4f36baa1657ebfd0ebe39ff691fa64fd3e5884.zip
Avoid descriptors leak in lua_http.
-rw-r--r--src/lua/lua_http.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lua/lua_http.c b/src/lua/lua_http.c
index 12b0072d3..1d5e3bcf8 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,