From: Pieter Lexis Date: Thu, 21 Jul 2016 14:43:47 +0000 (+0200) Subject: Change dsmap_t to a set to prevent duplicates X-Git-Tag: auth-4.0.1~6^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F4207%2Fhead;p=thirdparty%2Fpdns.git Change dsmap_t to a set to prevent duplicates --- diff --git a/pdns/rec-lua-conf.cc b/pdns/rec-lua-conf.cc index 1fdef761f3..73822342e1 100644 --- a/pdns/rec-lua-conf.cc +++ b/pdns/rec-lua-conf.cc @@ -34,10 +34,7 @@ GlobalStateHolder g_luaconfs; LuaConfigItems::LuaConfigItems() { auto ds=unique_ptr(dynamic_cast(DSRecordContent::make("19036 8 2 49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5"))); - dsmap_t dsmap; - dsmap.insert({ds->d_tag, *ds}); - // this hurts physically - dsAnchors[DNSName(".")] = dsmap; + dsAnchors[DNSName(".")].insert(*ds); } /* DID YOU READ THE STORY ABOVE? */ @@ -223,11 +220,8 @@ void loadRecursorLuaConfig(const std::string& fname) Lua.writeFunction("addDS", [&lci](const std::string& who, const std::string& what) { DNSName zone(who); - dsmap_t dsmap = lci.dsAnchors[zone]; - auto ds = unique_ptr(dynamic_cast(DSRecordContent::make(what))); - dsmap.insert({ds->d_tag, *ds}); - lci.dsAnchors[zone] = dsmap; + lci.dsAnchors[zone].insert(*ds); }); Lua.writeFunction("clearDS", [&lci](boost::optional who) { diff --git a/pdns/rec_channel_rec.cc b/pdns/rec_channel_rec.cc index e5b2dee050..1e8e77a507 100644 --- a/pdns/rec_channel_rec.cc +++ b/pdns/rec_channel_rec.cc @@ -489,10 +489,8 @@ string doAddTA(T begin, T end) try { L<(dynamic_cast(DSRecordContent::make(what))); - dsmap.insert({ds->d_tag, *ds}); - lci.dsAnchors[who] = dsmap; + lci.dsAnchors[who].insert(*ds); }); broadcastAccFunction(boost::bind(pleaseWipePacketCache, who, true)); L<dsAnchors) { ret += anchor.first.toLogString() + "\n"; for (auto e : anchor.second) { - ret+="\t\t"+e.second.getZoneRepresentation() + "\n"; + ret+="\t\t"+e.getZoneRepresentation() + "\n"; } } diff --git a/pdns/toysdig.cc b/pdns/toysdig.cc index 7f1bbbd4c7..fefe414609 100644 --- a/pdns/toysdig.cc +++ b/pdns/toysdig.cc @@ -101,10 +101,7 @@ GlobalStateHolder g_luaconfs; LuaConfigItems::LuaConfigItems() { auto ds=std::unique_ptr(dynamic_cast(DSRecordContent::make("19036 8 2 49aac11d7b6f6446702e54a1607371607a1a41855200fd2ce1cdde32f24e8fb5"))); - // this hurts physically - dsmap_t dsmap; - dsmap.insert({ds->d_tag, *ds}); - dsAnchors[DNSName(".")] = dsmap; + dsAnchors[DNSName(".")].insert(*ds); } DNSFilterEngine::DNSFilterEngine() {} diff --git a/pdns/validate.cc b/pdns/validate.cc index e70070f85e..e1bf751bb2 100644 --- a/pdns/validate.cc +++ b/pdns/validate.cc @@ -256,13 +256,12 @@ vState getKeysFor(DNSRecordOracle& dro, const DNSName& zone, keyset_t &keyset) } LOG("got "<second; - auto r = getByTag(tkeys, i->first); + auto r = getByTag(tkeys, dsrc.d_tag); // cerr<<"looking at DS with tag "<first<<", got "<first<<" for "<(dsrc.d_digesttype) % static_cast(dsrc.d_algorithm)).str()); @@ -434,7 +433,7 @@ vState getKeysFor(DNSRecordOracle& dro, const DNSName& zone, keyset_t &keyset) { const auto dsrc=std::dynamic_pointer_cast(*j); if(dsrc) { - dsmap.insert(make_pair(dsrc->d_tag, *dsrc)); + dsmap.insert(*dsrc); // dotEdge(keyqname, // "DNSKEY", keyqname, , // "DS", qname, std::to_string(dsrc.d_tag)); diff --git a/pdns/validate.hh b/pdns/validate.hh index b5d220e21a..00c555dda0 100644 --- a/pdns/validate.hh +++ b/pdns/validate.hh @@ -31,7 +31,7 @@ struct ContentSigPair // ponder adding a validate method that accepts a key }; typedef map, ContentSigPair> cspmap_t; -typedef std::multimap dsmap_t; +typedef std::set dsmap_t; void validateWithKeySet(const cspmap_t& rrsets, cspmap_t& validated, const std::set& keys); cspmap_t harvestCSPFromRecs(const vector& recs); vState getKeysFor(DNSRecordOracle& dro, const DNSName& zone, std::set &keyset);