return true;
}
+bool LMDBBackend::isNSEC3BackRecord(LMDBResourceRecord& lrr, const MDBOutVal& key, const MDBOutVal& val)
+{
+ if (compoundOrdername::getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
+ deserializeFromBuffer(val.get<StringView>(), lrr);
+ if (lrr.ttl == 0) {
+ return true;
+ }
+ }
+ return false;
+}
+
// NOLINTNEXTLINE(readability-function-cognitive-complexity,readability-identifier-length)
bool LMDBBackend::getBeforeAndAfterNamesAbsolute(domainid_t id, const DNSName& qname, DNSName& unhashed, DNSName& before, DNSName& after)
{
return false;
}
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl) // the kind of NSEC3 we need
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break; // the kind of NSEC3 we need
}
if (cursor.prev(key, val)) {
// hit beginning of database, again means something is wrong with it
return false;
}
for (;;) {
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl)
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
if (cursor.next(key, val) || co.getDomainID(key.getNoStripHeader<StringView>()) != id) {
return false;
}
for (;;) {
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl)
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
if (cursor.next(key, val) || co.getDomainID(key.getNoStripHeader<StringView>()) != id) {
// cout <<"Going backwards to find 'before'"<<endl;
int count = 0;
for (;;) {
- if (co.getQName(key.getNoStripHeader<StringView>()).canonCompare(qname) && co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- // cout<<"Potentially stopping traverse at "<< co.getQName(key.get<StringView>()) <<", " << (co.getQName(key.get<StringView>()).canonCompare(qname))<<endl;
- // cout<<"qname = "<<qname<<endl;
- // cout<<"here = "<<co.getQName(key.get<StringView>())<<endl;
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl)
+ if (compoundOrdername::getQName(key.getNoStripHeader<StringView>()).canonCompare(qname)) {
+ if (isNSEC3BackRecord(lrr, key, val)) {
break;
+ }
}
if (cursor.prev(key, val) || co.getDomainID(key.getNoStripHeader<StringView>()) != id) {
return false;
}
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl) // the kind of NSEC3 we need
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
if (cursor.prev(key, val)) {
// hit beginning of database, again means something is wrong with it
return false;
}
for (;;) {
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl)
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
if (cursor.next(key, val)) {
return false;
}
for (;;) {
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl)
- break;
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
if (cursor.next(key, val)) {
}
// cout<<"After "<<co.getQName(key.get<StringView>()) <<endl;
- if (co.getQType(key.getNoStripHeader<StringView>()) == QType::NSEC3) {
- deserializeFromBuffer(val.get<StringView>(), lrr);
- if (!lrr.ttl) {
- break;
- }
+ if (isNSEC3BackRecord(lrr, key, val)) {
+ break;
}
}
after = co.getQName(key.getNoStripHeader<StringView>());