From: Mark Andrews Date: Wed, 31 Jul 2019 23:30:49 +0000 (+1000) Subject: maintain a reference to 'rpz' when calling rpz.c:update_quantum X-Git-Tag: v9.15.3~12^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=53800281fea22b2b32cec64e2e9174016581a2a9;p=thirdparty%2Fbind9.git maintain a reference to 'rpz' when calling rpz.c:update_quantum --- diff --git a/lib/dns/rpz.c b/lib/dns/rpz.c index d47a8bd0fd2..b5763fab0a9 100644 --- a/lib/dns/rpz.c +++ b/lib/dns/rpz.c @@ -169,6 +169,9 @@ struct dns_rpz_nm_data { dns_rpz_nm_zbits_t wild; }; +static void +rpz_detach(dns_rpz_zone_t **rpzp, dns_rpz_zones_t *rpzs); + #if 0 /* * Catch a name while debugging. @@ -1980,6 +1983,7 @@ update_quantum(isc_task_t *task, isc_event_t *event) { isc_ht_destroy(&rpz->newnodes); dns_db_closeversion(rpz->updb, &rpz->updbversion, false); dns_db_detach(&rpz->updb); + rpz_detach(&rpz, rpz->rpzs); } static void @@ -1994,6 +1998,7 @@ dns_rpz_update_from_db(dns_rpz_zone_t *rpz) { REQUIRE(rpz->updbit == NULL); REQUIRE(rpz->newnodes == NULL); + isc_refcount_increment(&rpz->refs); dns_db_attach(rpz->db, &rpz->updb); rpz->updbversion = rpz->dbversion; rpz->dbversion = NULL; @@ -2018,6 +2023,7 @@ dns_rpz_update_from_db(dns_rpz_zone_t *rpz) { isc_ht_destroy(&rpz->newnodes); dns_db_closeversion(rpz->updb, &rpz->updbversion, false); dns_db_detach(&rpz->updb); + rpz_detach(&rpz, rpz->rpzs); } /*