number with parse errors.
- unit test for multiple ENT case.
- fix for cname out of validated unsec zone.
+ - fixup nasty id=0 reuse. Also added assertions to detect its
+ return (the assertion catches in the existing test cases).
1 October 2007: Wouter
- skip F77, CXX, objC tests in configure step.
hashvalue_t h = k->entry.hash;
uint16_t rrset_type = ntohs(k->rk.type);
int equal = 0;
+ log_assert(ref->id != 0 && k->id != 0);
/* looks up item with a readlock - no editing! */
if((e=slabhash_lookup(&r->table, h, k, 0)) != 0) {
/* return id and key as they will be used in the cache
/* use insert to update entry to manage lruhash
* cache size values nicely. */
}
+ log_assert(ref->key->id != 0);
slabhash_insert(&r->table, h, &k->entry, k->entry.data, alloc);
if(e) {
/* For NSEC, NSEC3, DNAME, when rdata is updated, update
if(i>0 && ref[i].key == ref[i-1].key)
continue; /* only lock items once */
lock_rw_rdlock(&ref[i].key->entry.lock);
+ log_assert(ref[i].id != 0 && ref[i].key->id != 0);
if(ref[i].id != ref[i].key->id || timenow >
((struct packed_rrset_data*)(ref[i].key->entry.data))
->ttl) {
fk = from->rrsets[i];
dk = dest->rrsets[i];
fd = (struct packed_rrset_data*)fk->entry.data;
- dk->id = fk->id;
dk->entry.hash = fk->entry.hash;
dk->rk = fk->rk;
- if(region)
+ if(region) {
+ dk->id = fk->id;
dk->rk.dname = (uint8_t*)region_alloc_init(region,
fk->rk.dname, fk->rk.dname_len);
- else
+ } else
dk->rk.dname = (uint8_t*)memdup(fk->rk.dname,
fk->rk.dname_len);
if(!dk->rk.dname)