diff --git a/doc/Changelog b/doc/Changelog index dfa0ff001..0a7807ca1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix with libnettle make test with dsa disabled. - Fix contrib/fastrpz.patch to apply cleanly. Fix for serve-stale fixes, but it does not compile, conflicts with new rpz code. + - Fix to clean memory leak of respip_addr.lock when ip_tree deleted. 10 February 2020: George - Document 'ub_result.was_ratelimited' in libunbound. diff --git a/respip/respip.c b/respip/respip.c index e47171f85..e9b7d5dbf 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -69,12 +69,21 @@ respip_set_create(void) return set; } +/** helper traverse to delete resp_addr nodes */ +static void +resp_addr_del(rbnode_type* n, void* ATTR_UNUSED(arg)) +{ + struct resp_addr* r = (struct resp_addr*)n->key; + lock_rw_destroy(&r->lock); +} + void respip_set_delete(struct respip_set* set) { if(!set) return; lock_rw_destroy(&set->lock); + traverse_postorder(&set->ip_tree, resp_addr_del, NULL); regional_destroy(set->region); free(set); }