From: Kees Monshouwer Date: Sat, 8 Nov 2014 13:08:25 +0000 (+0100) Subject: better key for packetcache X-Git-Tag: auth-3.4.2~15^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a37fe8c264b2ea60c63e11e36f657e02ba49407a;p=thirdparty%2Fpdns.git better key for packetcache --- diff --git a/pdns/packetcache.cc b/pdns/packetcache.cc index 5e35fc7ab1..5c7f013d0a 100644 --- a/pdns/packetcache.cc +++ b/pdns/packetcache.cc @@ -290,8 +290,16 @@ bool PacketCache::getEntryLocked(const string &qname, const QType& qtype, CacheE string PacketCache::pcReverse(const string &content) { - string tmp = string(content.rbegin(), content.rend()); - return toLower(boost::replace_all_copy(tmp, ".", "\t"))+"\t"; + typedef vector > parts_t; + parts_t parts; + vstringtok(parts,toLower(content), "."); + string ret; + ret.reserve(content.size()+1); + for(parts_t::reverse_iterator i=parts.rbegin(); i!=parts.rend(); ++i) { + ret.append(1, (char)(i->second - i->first)); + ret.append(content.c_str() + i->first, i->second - i->first); + } + return ret; } map PacketCache::getCounts()