From: Attila Molnar Date: Tue, 12 May 2015 22:56:35 +0000 (+0200) Subject: core_dns Set the TTL of the cache entry to the lowest TTL in a set of ResourceRecords X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=cc007f8a3baa92ac46f17457a9a321e9b6530ded;p=user%2Fhenk%2Fcode%2Finspircd.git core_dns Set the TTL of the cache entry to the lowest TTL in a set of ResourceRecords --- diff --git a/src/coremods/core_dns.cpp b/src/coremods/core_dns.cpp index 6652841d0..e1494b7f3 100644 --- a/src/coremods/core_dns.cpp +++ b/src/coremods/core_dns.cpp @@ -374,7 +374,18 @@ class MyManager : public Manager, public Timer, public EventHandler */ void AddCache(Query& r) { - const ResourceRecord& rr = r.answers[0]; + // Determine the lowest TTL value and use that as the TTL of the cache entry + unsigned int cachettl = UINT_MAX; + for (std::vector::const_iterator i = r.answers.begin(); i != r.answers.end(); ++i) + { + const ResourceRecord& rr = *i; + if (rr.ttl < cachettl) + cachettl = rr.ttl; + } + + ResourceRecord& rr = r.answers.front(); + // Set TTL to what we've determined to be the lowest + rr.ttl = cachettl; ServerInstance->Logs->Log(MODNAME, LOG_DEBUG, "cache: added cache for " + rr.name + " -> " + rr.rdata + " ttl: " + ConvToStr(rr.ttl)); this->cache[r.question] = r; }