if(!records->empty() && bdr.qname==boost::prior(records->end())->qname)
bdr.qname=boost::prior(records->end())->qname;
- bdr.qname=bdr.qname.labelReverse();
+ bdr.qname=bdr.qname;
bdr.qtype=qtype.getCode();
bdr.content=content;
bdr.nsec3hash = hashed;
if(bdr.qtype == QType::DS) // as are delegation signer records
continue;
- sqname = bdr.qname.labelReverse();
+ sqname = bdr.qname;
do {
if(sqname.empty() || sqname.isRoot()) // this is auth of course!
uint32_t maxent = ::arg().asNum("max-ent-entries");
for(const auto& bdr : *records)
- qnames.insert(bdr.qname.labelReverse());
+ qnames.insert(bdr.qname);
for(const auto& bdr : *records) {
- shorter=bdr.qname.labelReverse();
+ shorter=bdr.qname;
if (!bdr.auth && bdr.qtype == QType::NS)
auth=(!nsec3zone || !ns3pr.d_flags);
bool Bind2Backend::findBeforeAndAfterUnhashed(BB2DomainInfo& bbd, const DNSName& qname, DNSName& unhashed, string& before, string& after)
{
shared_ptr<const recordstorage_t> records = bbd.d_records.get();
+
+// BOOST_FOREACH(const Bind2DNSRecord& bdr, *records) {
+// cerr<<"Hash: "<<bdr.qname.toString()<<"\t"<< (qname < bdr.qname) <<"\t"<<qname.toString()<<endl;
+// }
+
recordstorage_t::const_iterator iter = records->upper_bound(qname);
if (before.empty()){
//cout<<"starting before for: '"<<domain<<"'"<<endl;
iter = records->upper_bound(qname);
- while(iter == records->end() || (qname < iter->qname) || (!(iter->auth) && (!(iter->qtype == QType::NS))) || (!(iter->qtype)))
+ while(iter == records->end() || (qname.canonCompare(iter->qname)) || (!(iter->auth) && (!(iter->qtype == QType::NS))) || (!(iter->qtype)))
iter--;
- before=iter->qname.toString(" ",false);
+ before=iter->qname.labelReverse().toString(" ",false);
}
else {
- before=qname.toString(" ",false);
+ before=qname.labelReverse().toString(" ",false);
}
//cerr<<"Now after"<<endl;
break;
}
}
- after = (iter)->qname.toString(" ",false);
+ after = (iter)->qname.labelReverse().toString(" ",false);
}
cerr<<"Before: '"<<before<<"', after: '"<<after<<"'\n";
nsec3zone=getNSEC3PARAM(auth, &ns3pr);
if(!nsec3zone) {
- DNSName dqname(qname);
+ DNSName dqname = DNSName(labelReverse(qname));
//cerr<<"in bind2backend::getBeforeAndAfterAbsolute: no nsec3 for "<<auth<<endl;
return findBeforeAndAfterUnhashed(bbd, dqname, unhashed, before, after);
}
}
before = iter->nsec3hash;
- unhashed = iter->qname.labelReverse() + auth;
+ unhashed = iter->qname + auth;
// cerr<<"before: "<<(iter->nsec3hash)<<"/"<<(iter->qname)<<endl;
}
else {
pair<recordstorage_t::const_iterator, recordstorage_t::const_iterator> range;
- range = d_handle.d_records->equal_range(d_handle.qname.labelReverse());
+ range = d_handle.d_records->equal_range(d_handle.qname);
//cout<<"End equal range"<<endl;
d_handle.mustlog = mustlog;
bool Bind2Backend::handle::get_list(DNSResourceRecord &r)
{
if(d_qname_iter!=d_qname_end) {
- r.qname=d_qname_iter->qname.empty() ? domain : (d_qname_iter->qname.labelReverse()+domain);
+ r.qname=d_qname_iter->qname.empty() ? domain : (d_qname_iter->qname+domain);
r.domain_id=id;
r.content=(d_qname_iter)->content;
r.qtype=(d_qname_iter)->qtype;
mutable bool auth;
bool operator<(const Bind2DNSRecord& rhs) const
{
- if(qname < rhs.qname)
+ if(qname.canonCompare(rhs.qname))
return true;
- if(rhs.qname < qname)
+ if(rhs.qname.canonCompare(qname))
return false;
if(qtype==QType::SOA && rhs.qtype!=QType::SOA)
return true;
using std::less<Bind2DNSRecord>::operator();
// use operator<
bool operator() (const DNSName& a, const Bind2DNSRecord& b) const
- {return a < b.qname;}
+ {return a.canonCompare(b.qname);}
bool operator() (const Bind2DNSRecord& a, const DNSName& b) const
- {return a.qname < b;}
+ {return a.qname.canonCompare(b);}
bool operator() (const Bind2DNSRecord& a, const Bind2DNSRecord& b) const
- {return a.qname < b.qname;}
+ {return a.qname.canonCompare(b.qname);}
};
struct HashedTag{};