From: Kees Monshouwer Date: Sat, 8 Nov 2014 13:08:25 +0000 (+0100) Subject: better key for packetcache X-Git-Tag: rec-3.7.0-rc1~60^2^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fb9adc215db2164766a0a01eaa105ff454d88493;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()