unsigned char *hdr = (unsigned char *)header;
size_t hdrsize = sizeof (*header);
+ RWLOCK(&rbtversion->rwlock, isc_rwlocktype_write);
if (add) {
rbtversion->records += dns_rdataslab_count(hdr, hdrsize);
rbtversion->bytes += dns_rdataslab_size(hdr, hdrsize);
rbtversion->records -= dns_rdataslab_count(hdr, hdrsize);
rbtversion->bytes -= dns_rdataslab_size(hdr, hdrsize);
}
+ RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write);
}
static isc_result_t
rbtnode->data = newheader;
newheader->next = topheader->next;
if (rbtversion != NULL && !header_nx) {
- RWLOCK(&rbtversion->rwlock,
- isc_rwlocktype_write);
update_recordsandbytes(false, rbtversion,
header);
- RWUNLOCK(&rbtversion->rwlock,
- isc_rwlocktype_write);
}
free_rdataset(rbtdb, rbtdb->common.mctx, header);
} else {
}
}
if (rbtversion != NULL && !header_nx) {
- RWLOCK(&rbtversion->rwlock,
- isc_rwlocktype_write);
update_recordsandbytes(false, rbtversion,
header);
- RWUNLOCK(&rbtversion->rwlock,
- isc_rwlocktype_write);
}
}
} else {
}
if (rbtversion != NULL && !newheader_nx) {
- RWLOCK(&rbtversion->rwlock, isc_rwlocktype_write);
update_recordsandbytes(true, rbtversion, newheader);
- RWUNLOCK(&rbtversion->rwlock, isc_rwlocktype_write);
}
/*
unsigned char *p = (unsigned char *) header;
size_t size = dns_rdataslab_size(p, sizeof(*header));
unsigned int count = dns_rdataslab_count(p, sizeof(*header));;
+ RWLOCK(&rbtdb->current_version->rwlock, isc_rwlocktype_write);
rbtdb->current_version->records += count;
rbtdb->current_version->bytes += size;
+ RWUNLOCK(&rbtdb->current_version->rwlock,
+ isc_rwlocktype_write);
isc_crc64_update(crc, p, size);
#ifdef DEBUG
hexdump("hashing header", p, sizeof(rdatasetheader_t));