dns_zone_detach(&zone);
}
- /*
- * If we cannot reuse an existing zone, we will have to
- * create a new one.
- */
- if (zone == NULL) {
+ if (zone != NULL) {
+ /*
+ * We found a reusable zone. Make it use the
+ * new view.
+ */
+ dns_zone_setview(zone, view);
+ } else {
+ /*
+ * We cannot reuse an existing zone, we have
+ * to create a new one.
+ */
CHECK(dns_zone_create(&zone, lctx->mctx));
CHECK(dns_zone_setorigin(zone, origin));
dns_zone_setview(zone, view);
- CHECK(dns_zonemgr_managezone(ns_g_server->zonemgr,
- zone));
+ CHECK(dns_zonemgr_managezone(ns_g_server->zonemgr, zone));
}
/*
* SOFTWARE.
*/
-/* $Id: zone.c,v 1.122 2000/05/22 17:23:11 gson Exp $ */
+/* $Id: zone.c,v 1.123 2000/05/23 04:38:22 gson Exp $ */
#include <config.h>
void
dns_zone_setview(dns_zone_t *zone, dns_view_t *view) {
+ if (zone->view != NULL)
+ dns_view_weakdetach(&zone->view);
dns_view_weakattach(view, &zone->view);
}