From 6e732e213f5f2ad93b8f77929c5b8ed6fad0a7c6 Mon Sep 17 00:00:00 2001 From: bert hubert Date: Mon, 26 Sep 2016 12:12:59 +0200 Subject: [PATCH] make sure we clean based on sequence index and not on hash index. This bug potentially repeats for all users of PruneCollection. --- pdns/packetcache.cc | 5 ++--- pdns/packetcache.hh | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pdns/packetcache.cc b/pdns/packetcache.cc index 29de648192..498c92a53b 100644 --- a/pdns/packetcache.cc +++ b/pdns/packetcache.cc @@ -416,10 +416,9 @@ void PacketCache::cleanup() unsigned int totErased=0; for(auto& mc : d_maps) { WriteLock wl(&mc.d_mut); - typedef cmap_t::nth_index<1>::type sequence_t; - sequence_t& sidx=mc.d_map.get<1>(); + auto& sidx = boost::multi_index::get(mc.d_map); unsigned int erased=0, lookedAt=0; - for(sequence_t::iterator i=sidx.begin(); i != sidx.end(); lookedAt++) { + for(auto i=sidx.begin(); i != sidx.end(); lookedAt++) { if(i->ttd < now) { sidx.erase(i++); erased++; diff --git a/pdns/packetcache.hh b/pdns/packetcache.hh index 22e455a48c..dd23524cb0 100644 --- a/pdns/packetcache.hh +++ b/pdns/packetcache.hh @@ -113,6 +113,7 @@ private: void getTTLS(); struct UnorderedNameTag{}; + struct SequenceTag{}; typedef multi_index_container< CacheEntry, indexed_by < @@ -136,7 +137,7 @@ private: member, member, member > > , - sequenced<> + sequenced> > > cmap_t; -- 2.47.2