From 64a4a928aa93d0f7a5047898e06601f81ca09e2e Mon Sep 17 00:00:00 2001 From: Pieter Lexis Date: Thu, 21 Jul 2016 16:43:47 +0200 Subject: [PATCH] Change dsmap_t to a set to prevent duplicates --- pdns/rec-lua-conf.cc | 10 ++-------- pdns/rec_channel_rec.cc | 6 ++---- pdns/toysdig.cc | 5 +---- pdns/validate.cc | 11 +++++------ pdns/validate.hh | 2 +- 5 files changed, 11 insertions(+), 23 deletions(-) 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); -- 2.47.2