reqdata->cb (reply, reqdata->ud);
+ /*
+ * Ref event to avoid double unref by
+ * event removing
+ */
+ rdns_request_retain (reply->request);
remove_normal_event (reqdata->session, rspamd_dns_fin_cb, reqdata->req);
}
if (req != NULL) {
register_async_event (session, (event_finalizer_t)rspamd_dns_fin_cb, req,
g_quark_from_static_string ("dns resolver"));
- /* Ref event to free it only when according async event is deleted from the session */
- rdns_request_retain (req);
reqdata->req = req;
}
else {
struct rspamd_async_event *ev = v;
/* Call event's finalizer */
+ msg_debug ("removed event on destroy: %p, subsystem: %s", ev->user_data,
+ g_quark_to_string (ev->subsystem));
+
if (ev->fin != NULL) {
ev->fin (ev->user_data);
}