diff --git a/evdns.c b/evdns.c index 9beac911..9094f844 100644 --- a/evdns.c +++ b/evdns.c @@ -647,6 +647,8 @@ request_finished(struct request *const req, struct request **head, int free_hand } else { base->global_requests_waiting--; } + /* it was initialized during request_new / evtimer_assign */ + event_debug_unassign(&req->timeout_event); if (!req->request_appended) { /* need to free the request data on it's own */ diff --git a/include/event2/dns.h b/include/event2/dns.h index 113a1540..be726faa 100644 --- a/include/event2/dns.h +++ b/include/event2/dns.h @@ -377,7 +377,7 @@ struct evdns_request *evdns_base_resolve_reverse_ipv6(struct evdns_base *base, c @param base the evdns_base that was used to make the request @param req the evdns_request that was returned by calling a resolve function - @see evdns_base_resolve_ip4(), evdns_base_resolve_ipv6, evdns_base_resolve_reverse + @see evdns_base_resolve_ipv4(), evdns_base_resolve_ipv6, evdns_base_resolve_reverse */ void evdns_cancel_request(struct evdns_base *base, struct evdns_request *req); diff --git a/signal.c b/signal.c index 72c0847c..2079204d 100644 --- a/signal.c +++ b/signal.c @@ -400,9 +400,11 @@ evsig_dealloc(struct event_base *base) int i = 0; if (base->sig.ev_signal_added) { event_del(&base->sig.ev_signal); - event_debug_unassign(&base->sig.ev_signal); base->sig.ev_signal_added = 0; } + /* debug event is created in evsig_init/event_assign even when + * ev_signal_added == 0, so unassign is required */ + event_debug_unassign(&base->sig.ev_signal); for (i = 0; i < NSIG; ++i) { if (i < base->sig.sh_old_max && base->sig.sh_old[i] != NULL)