diff options
author | Vsevolod Stakhov <vsevolod@rspamd.com> | 2022-09-19 13:46:11 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@rspamd.com> | 2022-09-19 13:46:11 +0100 |
commit | 5bae837e5fb282e055a9d80d9d6aaf7eaed9a2d5 (patch) | |
tree | 2df0b8a91e69da8a650fa1f489be8699ea134115 /src/lua/lua_tcp.c | |
parent | 68cbb52701b0cb5a331959a3b645e375f4dc3749 (diff) | |
download | rspamd-5bae837e5fb282e055a9d80d9d6aaf7eaed9a2d5.tar.gz rspamd-5bae837e5fb282e055a9d80d9d6aaf7eaed9a2d5.zip |
[Minor] Try to fix refcounts related crash
Diffstat (limited to 'src/lua/lua_tcp.c')
-rw-r--r-- | src/lua/lua_tcp.c | 5 |
1 files 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); |