]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
maintain a reference to 'rpz' when calling rpz.c:update_quantum
authorMark Andrews <marka@isc.org>
Wed, 31 Jul 2019 23:30:49 +0000 (09:30 +1000)
committerMark Andrews <marka@isc.org>
Wed, 31 Jul 2019 23:30:49 +0000 (09:30 +1000)
lib/dns/rpz.c

index d47a8bd0fd29bef722a93f3ac9410113ceab5ef5..b5763fab0a9504b14fdf688e3d71376c752fd243 100644 (file)
@@ -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);
 }
 
 /*