From: bert hubert Date: Sun, 4 Sep 2016 19:02:51 +0000 (+0200) Subject: bindbackend hashed X-Git-Tag: dnsdist-1.1.0-beta2~123^2~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=94364112752420cb5739ea1e6a047a6677e8c05e;p=thirdparty%2Fpdns.git bindbackend hashed --- diff --git a/modules/bindbackend/bindbackend2.cc b/modules/bindbackend/bindbackend2.cc index 07330b4fa2..9be212f0d7 100644 --- a/modules/bindbackend/bindbackend2.cc +++ b/modules/bindbackend/bindbackend2.cc @@ -998,16 +998,11 @@ bool Bind2Backend::getBeforeAndAfterNamesAbsolute(uint32_t id, const std::string return findBeforeAndAfterUnhashed(bbd, dqname, unhashed, before, after); } else { - typedef recordstorage_t::index::type records_by_hashindex_t; - records_by_hashindex_t& hashindex=boost::multi_index::get(*bbd.d_records.getWRITABLE()); + auto& hashindex=boost::multi_index::get(*bbd.d_records.getWRITABLE()); - records_by_hashindex_t::const_iterator iter, first; - first = hashindex.upper_bound(""); // skip records without a hash + auto first = hashindex.upper_bound(""); + auto iter = hashindex.upper_bound(toLower(qname)); - // for(auto iter = first; iter != hashindex.end(); iter++) - // cerr<nsec3hash<nsec3hash; @@ -1081,20 +1076,17 @@ void Bind2Backend::lookup(const QType &qtype, const DNSName &qname, DNSPacket *p if(d_handle.d_records->empty()) DLOG(L<<"Query with no results"< range; - - range = d_handle.d_records->equal_range(d_handle.qname); - //cout<<"End equal range"<(*d_handle.d_records); + auto range = hashedidx.equal_range(d_handle.qname); if(range.first==range.second) { - // cerr<<"Found nothing!"< #include #include +#include #include #include #include @@ -86,13 +87,15 @@ struct Bind2DNSCompare : std::less {return a.qname.canonCompare(b.qname);} }; -struct HashedTag{}; +struct NSEC3Tag{}; +struct UnorderedNameTag{}; typedef multi_index_container< Bind2DNSRecord, indexed_by < ordered_non_unique, Bind2DNSCompare >, - ordered_non_unique, member > + hashed_non_unique, member >, + ordered_non_unique, member > > > recordstorage_t; @@ -194,7 +197,7 @@ public: void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1); bool list(const DNSName &target, int id, bool include_disabled=false); bool get(DNSResourceRecord &); - bool get(DNSZoneRecord &) override; + // bool get(DNSZoneRecord &) override; void getAllDomains(vector *domains, bool include_disabled=false); static DNSBackend *maker(); @@ -264,9 +267,10 @@ private: handle(); shared_ptr d_records; - recordstorage_t::const_iterator d_iter, d_end_iter; - recordstorage_t::const_iterator d_qname_iter; - recordstorage_t::const_iterator d_qname_end; + recordstorage_t::index::type::const_iterator d_iter, d_end_iter; + + recordstorage_t::const_iterator d_qname_iter, d_qname_end; + DNSName qname; DNSName domain;