bool
dns__zone_inline_secure(dns_zone_t *zone) {
REQUIRE(DNS_ZONE_VALID(zone));
+ REQUIRE(LOCKED_ZONE(zone));
if (zone->raw != NULL) {
return true;
}
bool
dns__zone_inline_raw(dns_zone_t *zone) {
REQUIRE(DNS_ZONE_VALID(zone));
+ REQUIRE(LOCKED_ZONE(zone));
if (zone->secure != NULL) {
return true;
}
isc_result_t
dns_zone_loadandthaw(dns_zone_t *zone) {
isc_result_t result;
+ bool inline_raw;
- if (dns__zone_inline_raw(zone)) {
+ LOCK_ZONE(zone);
+ inline_raw = dns__zone_inline_raw(zone);
+ UNLOCK_ZONE(zone);
+
+ if (inline_raw) {
result = zone_load(zone->secure, DNS_ZONELOADFLAG_THAW, false);
} else {
/*
dns_db_t *db = NULL;
dns_typepair_t typepair;
- INSIST(LOCKED_ZONE(zone));
+ REQUIRE(DNS_ZONE_VALID(zone));
+ REQUIRE(LOCKED_ZONE(zone));
/* We only re-sign zones that can be dynamically updated */
if (!dns_zone_isdynamic(zone, false)) {
dns_masterformat_t masterformat = dns_masterformat_none;
const dns_master_style_t *masterstyle = NULL;
dns_masterrawheader_t rawdata;
+ bool inline_secure;
/*
* 'compact' MUST only be set if we are loop locked.
dns_master_initrawheader(&rawdata);
- if (dns__zone_inline_secure(zone)) {
+ LOCK_ZONE(zone);
+ inline_secure = dns__zone_inline_secure(zone);
+ UNLOCK_ZONE(zone);
+
+ if (inline_secure) {
get_raw_serial(zone->raw, &rawdata);
}
dns_dbversion_t *version = NULL;
dns_db_t *db = NULL;
dns_masterrawheader_t rawdata;
+ bool inline_secure;
REQUIRE(DNS_ZONE_VALID(zone));
return DNS_R_NOTLOADED;
}
+ LOCK_ZONE(zone);
+ inline_secure = dns__zone_inline_secure(zone);
+ UNLOCK_ZONE(zone);
+
dns_db_currentversion(db, &version);
dns_master_initrawheader(&rawdata);
if (rawversion == 0) {
rawdata.flags |= DNS_MASTERRAW_COMPAT;
- } else if (dns__zone_inline_secure(zone)) {
+ } else if (inline_secure) {
get_raw_serial(zone->raw, &rawdata);
} else if (zone->sourceserialset) {
rawdata.flags = DNS_MASTERRAW_SOURCESERIALSET;