string hashed;
if(! *narrow)
hashed=toLower(toBase32Hex(hashQNameWithSalt(ns3pr->d_iterations, ns3pr->d_salt, rrLabel)));
-
- di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, rrLabel, hashed, auth);
+
+ if (*narrow)
+ di->backend->nullifyDNSSECOrderNameAndUpdateAuth(di->id, rrLabel, auth);
+ else
+ di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, rrLabel, hashed, auth);
if(!auth || rrType == QType::DS) {
di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "NS");
di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "A");
bool auth=newRec.auth;
if ( ! pdns_iequals(di->zone, shorter)) {
- while(chopOff(shorter)) {
- if (pdns_iequals(shorter, di->zone))
+ do {
+ if (pdns_iequals(di->zone, shorter))
break;
bool foundShorter = false;
di->backend->lookup(QType(QType::ANY), shorter);
while (di->backend->get(rec)) {
- foundShorter = true;
+ if ( ! pdns_iequals(shorter, rrLabel) )
+ foundShorter = true;
if (rec.qtype == QType::NS) // are we inserting below a delegate?
auth=false;
}
- if (!foundShorter)
+ if (!foundShorter && auth && !pdns_iequals(shorter, rrLabel)) // haven't found any record at current level, insert ENT.
insnonterm.insert(shorter);
- else
+ if (foundShorter)
break; // if we find a shorter record, we can stop searching
- }
+ } while(chopOff(shorter));
}
if(*haveNSEC3)
if(! *narrow)
hashed=toLower(toBase32Hex(hashQNameWithSalt(ns3pr->d_iterations, ns3pr->d_salt, rrLabel)));
- di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, rrLabel, hashed, auth);
+ if (*narrow)
+ di->backend->nullifyDNSSECOrderNameAndUpdateAuth(di->id, rrLabel, auth);
+ else
+ di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, rrLabel, hashed, auth);
+
if (rrType == QType::DS)
di->backend->setDNSSECAuthOnDsRecord(di->id, rrLabel);
if(!auth)
;; ZONE SECTION:
;test.dyndns. IN SOA
-Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+Check delegate and DS added correctly
--- Start: diff start step.1 ---
-> add-delete.test.dyndns A 0 127.0.0.108 3600 '' 1
+> del.test.dyndns DS 0 39274 8 2 8e8a8cfb40fd0c30bfa82e53752e1c257dafb7b6206d12b9eda43af3eab2157d 3600 NULL 1
+> del.test.dyndns NS 0 ns1.del.test.dyndns 3600 NULL 0
+> ns1.del.test.dyndns A 0 127.0.0.1 3600 NULL 0
--- End: diff start step.1 ---
Answer:
;test.dyndns. IN SOA
Check if record is gone
---- Start: diff step.1 step.2 ---
-< add-delete.test.dyndns A 0 127.0.0.108 3600 '' 1
---- End: diff step.1 step.2 ---
+--- Start: diff start step.2 ---
+no difference
+--- End: diff start step.2 ---
;; ZONE SECTION:
;test.dyndns. IN SOA
-Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
+Check delegate and DS added correctly
--- Start: diff start step.1 ---
-> add-delete.test.dyndns A 0 127.0.0.108 3600 'gkhs0ms64101fs1dj19h7no8vn2tp4fk' 1
+> del.test.dyndns DS 0 39274 8 2 8e8a8cfb40fd0c30bfa82e53752e1c257dafb7b6206d12b9eda43af3eab2157d 3600 'ott41kituq4b2adjpf8gs59se6liu8vh' 1
+> del.test.dyndns NS 0 ns1.del.test.dyndns 3600 'ott41kituq4b2adjpf8gs59se6liu8vh' 0
+> ns1.del.test.dyndns A 0 127.0.0.1 3600 NULL 0
--- End: diff start step.1 ---
Answer:
;test.dyndns. IN SOA
Check if record is gone
---- Start: diff step.1 step.2 ---
-< add-delete.test.dyndns A 0 127.0.0.108 3600 'gkhs0ms64101fs1dj19h7no8vn2tp4fk' 1
---- End: diff step.1 step.2 ---
+--- Start: diff start step.2 ---
+no difference
+--- End: diff start step.2 ---
--- /dev/null
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check delegate and DS added correctly
+--- Start: diff start step.1 ---
+> del.test.dyndns DS 0 39274 8 2 8e8a8cfb40fd0c30bfa82e53752e1c257dafb7b6206d12b9eda43af3eab2157d 3600 'ott41kituq4b2adjpf8gs59se6liu8vh' 1
+> del.test.dyndns NS 0 ns1.del.test.dyndns 3600 NULL 0
+> ns1.del.test.dyndns A 0 127.0.0.1 3600 NULL 0
+--- End: diff start step.1 ---
+
+Answer:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: [id]
+;; flags: qr aa; ZONE: 1, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; ZONE SECTION:
+;test.dyndns. IN SOA
+
+Check if record is gone
+--- Start: diff start step.2 ---
+no difference
+--- End: diff start step.2 ---
+
Check if add-delete.test.dyndns. 3600 A 127.0.0.108 exists
--- Start: diff start step.1 ---
-> add-delete.test.dyndns A 0 127.0.0.108 3600 '' 1
+> add-delete.test.dyndns A 0 127.0.0.108 3600 NULL 1
--- End: diff start step.1 ---
Answer:
Check if record is gone
--- Start: diff step.1 step.2 ---
-< add-delete.test.dyndns A 0 127.0.0.108 3600 '' 1
+< add-delete.test.dyndns A 0 127.0.0.108 3600 NULL 1
--- End: diff step.1 step.2 ---
Reply to question for qname='x.d.e.f.test.dyndns.', qtype=A
Check if records are added
--- Start: diff start step.1 ---
-> a.b.c.d.e.f.test.dyndns A 0 127.0.0.1 3600 '' 1
-> a.b.d.e.f.test.dyndns A 0 127.0.0.1 3600 '' 1
+> a.b.c.d.e.f.test.dyndns A 0 127.0.0.1 3600 NULL 1
+> a.b.d.e.f.test.dyndns A 0 127.0.0.1 3600 NULL 1
> b.c.d.e.f.test.dyndns NULL NULL NULL NULL '' 1
> b.d.e.f.test.dyndns NULL NULL NULL NULL '' 1
> c.d.e.f.test.dyndns NULL NULL NULL NULL '' 1
Reply to question for qname='x.d.e.f.test.dyndns.', qtype=A
Check if a.b.c.d.e.f is removed correctly
--- Start: diff start step.2 ---
-> a.b.d.e.f.test.dyndns A 0 127.0.0.1 3600 '' 1
+> a.b.d.e.f.test.dyndns A 0 127.0.0.1 3600 NULL 1
> b.d.e.f.test.dyndns NULL NULL NULL NULL '' 1
> d.e.f.test.dyndns NULL NULL NULL NULL '' 1
> e.f.test.dyndns NULL NULL NULL NULL '' 1