From 10258f6b3d1ce54ffb22e6b9a31f8f001f7ee2d5 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Fri, 13 Oct 2000 13:45:45 +0000 Subject: [PATCH] 515. [bug] The ssu table was not beinge attached / detached by dns_zone_[sg]etssutable. [RT#397] --- CHANGES | 3 +++ lib/dns/include/dns/zone.h | 6 +++--- lib/dns/zone.c | 17 +++++++++++++---- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CHANGES b/CHANGES index 8163399939..e947139357 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ + 515. [bug] The ssu table was not beinge attached / detached + by dns_zone_[sg]etssutable. [RT#397] + 514. [func] Retry refresh and notify queries if they timeout. [RT #388] diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 7b94597950..206dc6a379 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.h,v 1.79 2000/10/12 21:51:58 mws Exp $ */ +/* $Id: zone.h,v 1.80 2000/10/13 13:45:45 marka Exp $ */ #ifndef DNS_ZONE_H #define DNS_ZONE_H 1 @@ -920,7 +920,7 @@ dns_zone_setidleout(dns_zone_t *zone, isc_uint32_t idleout); void dns_zone_getssutable(dns_zone_t *zone, dns_ssutable_t **table); /* - * Set the simple-secure-update policy table. + * Get the simple-secure-update policy table. * * Requires: * 'zone' to be a valid zone. @@ -929,7 +929,7 @@ dns_zone_getssutable(dns_zone_t *zone, dns_ssutable_t **table); void dns_zone_setssutable(dns_zone_t *zone, dns_ssutable_t *table); /* - * Get the simple-secure-update policy table. + * Set / clear the simple-secure-update policy table. * * Requires: * 'zone' to be a valid zone. diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 2764585f1b..86f3219c71 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: zone.c,v 1.231 2000/10/13 13:23:09 marka Exp $ */ +/* $Id: zone.c,v 1.232 2000/10/13 13:45:43 marka Exp $ */ #include @@ -4474,14 +4474,23 @@ dns_zone_getssutable(dns_zone_t *zone, dns_ssutable_t **table) { REQUIRE(DNS_ZONE_VALID(zone)); REQUIRE(table != NULL); REQUIRE(*table == NULL); - *table = zone->ssutable; + + LOCK(&zone->lock); + if (zone->ssutable != NULL) + dns_ssutable_attach(zone->ssutable, table); + UNLOCK(&zone->lock); } void dns_zone_setssutable(dns_zone_t *zone, dns_ssutable_t *table) { REQUIRE(DNS_ZONE_VALID(zone)); - REQUIRE(table != NULL); - zone->ssutable = table; + + LOCK(&zone->lock); + if (zone->ssutable != NULL) + dns_ssutable_detach(&zone->ssutable); + if (table != NULL) + dns_ssutable_attach(table, &zone->ssutable); + UNLOCK(&zone->lock); } void