From: Ruben d'Arco Date: Mon, 22 Jul 2013 17:15:28 +0000 (+0200) Subject: Correctl changedRec for deleting RRs X-Git-Tag: rec-3.6.0-rc1~545^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=589563c0542ad4c04cdedc375e6ab54074644afb;p=thirdparty%2Fpdns.git Correctl changedRec for deleting RRs --- diff --git a/pdns/rfc2136handler.cc b/pdns/rfc2136handler.cc index d5baacaf2e..b80215f271 100644 --- a/pdns/rfc2136handler.cc +++ b/pdns/rfc2136handler.cc @@ -435,7 +435,7 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * di->backend->setDNSSECAuthOnDsRecord(di->id, qname); } return 1; - } + } // end of NSEC3PARAM delete block di->backend->lookup(rrType, rrLabel); @@ -452,15 +452,16 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * else rrset.push_back(rec); } - } - di->backend->replaceRRSet(di->id, rrLabel, rrType, rrset); - L<backend->replaceRRSet(di->id, rrLabel, rrType, rrset); + L<zone) { + // If we've removed a delegate, we need to reset ordername/auth for some records. + if (rrType == QType::NS && rrLabel != di->zone) { vector belowOldDelegate, nsRecs, updateAuthFlag; di->backend->listSubZone(rrLabel, di->id); while (di->backend->get(rec)) { @@ -541,8 +542,11 @@ uint16_t PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord * break; } } + } else { // if (recordsToDelete.size()) + L<first; @@ -854,7 +858,7 @@ int PacketHandler::processUpdate(DNSPacket *p) { if (rr->d_class == QClass::NONE && rr->d_type == QType::NS && stripDot(rr->d_label) == di.zone) nsRRtoDelete.push_back(rr); else - changedRecords += performUpdate(msgPrefix, rr, &di, isPresigned, &narrow, &haveNSEC3, &ns3pr, &updatedSerial); + changedRecs += performUpdate(msgPrefix, rr, &di, isPresigned, &narrow, &haveNSEC3, &ns3pr, &updatedSerial); } } if (nsRRtoDelete.size()) { @@ -868,32 +872,32 @@ int PacketHandler::processUpdate(DNSPacket *p) { for (vector::iterator inZone=nsRRInZone.begin(); inZone != nsRRInZone.end(); inZone++) { for (vector::iterator rr=nsRRtoDelete.begin(); rr != nsRRtoDelete.end(); rr++) { if (inZone->getZoneRepresentation() == (*rr)->d_content->getZoneRepresentation()) - changedRecords += performUpdate(msgPrefix, *rr, &di, isPresigned, &narrow, &haveNSEC3, &ns3pr, &updatedSerial); + changedRecs += performUpdate(msgPrefix, *rr, &di, isPresigned, &narrow, &haveNSEC3, &ns3pr, &updatedSerial); } } } } // Section 3.6 - Update the SOA serial - outside of performUpdate because we do a SOA update for the complete update message - if (changedRecords > 0 && !updatedSerial) { + if (changedRecs > 0 && !updatedSerial) { increaseSerial(msgPrefix, &di, haveNSEC3, narrow, &ns3pr); - changedRecords++; + changedRecs++; } - if (changedRecords) { + if (changedRecs > 0) { if (!di.backend->commitTransaction()) { L<