void
dns_view_setviewcommit(dns_view_t *view) {
+ dns_zone_t *redirect = NULL, *managed_keys = NULL;
+
REQUIRE(DNS_VIEW_VALID(view));
LOCK(&view->lock);
if (view->redirect != NULL) {
- dns_zone_setviewcommit(view->redirect);
+ dns_zone_attach(view->redirect, &redirect);
}
if (view->managed_keys != NULL) {
- dns_zone_setviewcommit(view->managed_keys);
+ dns_zone_attach(view->managed_keys, &managed_keys);
}
if (view->zonetable != NULL) {
dns_zt_setviewcommit(view->zonetable);
}
UNLOCK(&view->lock);
+
+ if (redirect != NULL) {
+ dns_zone_setviewcommit(redirect);
+ dns_zone_detach(&redirect);
+ }
+ if (managed_keys != NULL) {
+ dns_zone_setviewcommit(managed_keys);
+ dns_zone_detach(&managed_keys);
+ }
}
void
dns_view_setviewrevert(dns_view_t *view) {
+ dns_zone_t *redirect = NULL, *managed_keys = NULL;
dns_zt_t *zonetable;
REQUIRE(DNS_VIEW_VALID(view));
*/
LOCK(&view->lock);
if (view->redirect != NULL) {
- dns_zone_setviewrevert(view->redirect);
+ dns_zone_attach(view->redirect, &redirect);
}
if (view->managed_keys != NULL) {
- dns_zone_setviewrevert(view->managed_keys);
+ dns_zone_attach(view->managed_keys, &managed_keys);
}
zonetable = view->zonetable;
UNLOCK(&view->lock);
+ if (redirect != NULL) {
+ dns_zone_setviewrevert(redirect);
+ dns_zone_detach(&redirect);
+ }
+ if (managed_keys != NULL) {
+ dns_zone_setviewrevert(managed_keys);
+ dns_zone_detach(&managed_keys);
+ }
if (zonetable != NULL) {
dns_zt_setviewrevert(zonetable);
}