From 5bae837e5fb282e055a9d80d9d6aaf7eaed9a2d5 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Mon, 19 Sep 2022 13:46:11 +0100 Subject: [PATCH] [Minor] Try to fix refcounts related crash --- src/lua/lua_tcp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lua/lua_tcp.c b/src/lua/lua_tcp.c index 6391e4e11..78085ecc6 100644 --- a/src/lua/lua_tcp.c +++ b/src/lua/lua_tcp.c @@ -599,7 +599,6 @@ lua_tcp_push_error (struct lua_tcp_cbdata *cbd, gboolean is_fatal, } lua_settop (L, top); - TCP_RELEASE (cbd); callback_called = TRUE; @@ -624,7 +623,6 @@ lua_tcp_push_error (struct lua_tcp_cbdata *cbd, gboolean is_fatal, } va_end (ap); - lua_thread_pool_restore_callback (&cbs); } @@ -1368,6 +1366,7 @@ lua_tcp_dns_handler (struct rdns_reply *reply, gpointer ud) const struct rdns_request_name *rn; if (reply->code != RDNS_RC_NOERROR) { + TCP_RETAIN (cbd); rn = rdns_request_get_name (reply->request, NULL); lua_tcp_push_error (cbd, TRUE, "unable to resolve host: %s", rn->name); @@ -1392,6 +1391,7 @@ lua_tcp_dns_handler (struct rdns_reply *reply, gpointer ud) rspamd_inet_address_set_port (cbd->addr, cbd->port); if (!lua_tcp_make_connection (cbd)) { + TCP_RETAIN (cbd); lua_tcp_push_error (cbd, TRUE, "unable to make connection to the host %s", rspamd_inet_address_to_string (cbd->addr)); TCP_RELEASE (cbd); @@ -2069,6 +2069,7 @@ lua_tcp_connect_sync (lua_State *L) if (!rspamd_dns_resolver_request_task (task, lua_tcp_dns_handler, cbd, RDNS_REQUEST_A, host)) { + cbd->item = NULL; /* We have not registered watcher */ lua_pushboolean (L, FALSE); lua_pushliteral (L, "Failed to initiate dns request"); TCP_RELEASE (cbd); -- 2.39.5