From: Ruben d'Arco Date: Fri, 10 May 2013 19:09:43 +0000 (+0200) Subject: Correctly add delegate in NSEC3 X-Git-Tag: rec-3.6.0-rc1~556^2~3^2~36 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=be40c2dfe6a6d97aef84b8ff3519a71d8f6072ec;p=thirdparty%2Fpdns.git Correctly add delegate in NSEC3 --- diff --git a/pdns/rfc2136handler.cc b/pdns/rfc2136handler.cc index ec81a3a5a7..899a32faf0 100755 --- a/pdns/rfc2136handler.cc +++ b/pdns/rfc2136handler.cc @@ -254,7 +254,8 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, rrLabel, hashed, auth); if(!auth || rrType == QType::DS) { - di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "NS"); + if (ns3pr->d_flags) + di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "NS"); di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "A"); di->backend->nullifyDNSSECOrderNameAndAuth(di->id, rrLabel, "AAAA"); } @@ -274,7 +275,7 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * // Auth can only be false when the rrLabel is not the zone if (auth == false && rrType == QType::NS) { DLOG(L< qnames; di->backend->listSubZone(rrLabel, di->id); while(di->backend->get(rec)) { @@ -288,7 +289,8 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * hashed=toLower(toBase32Hex(hashQNameWithSalt(ns3pr->d_iterations, ns3pr->d_salt, *qname))); di->backend->updateDNSSECOrderAndAuthAbsolute(di->id, *qname, hashed, auth); - di->backend->nullifyDNSSECOrderNameAndAuth(di->id, *qname, "NS"); + if (ns3pr->d_flags) + di->backend->nullifyDNSSECOrderNameAndAuth(di->id, *qname, "NS"); } else // NSEC di->backend->updateDNSSECOrderAndAuth(di->id, di->zone, *qname, auth); @@ -307,7 +309,7 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * DLOG(L<d_class<<"; rrType: "<d_class == QClass::ANY) d_dk.unsetNSEC3PARAM(rrLabel); else if (rr->d_class == QClass::NONE) {