added option to limit number of IPs per host that are saved in cache
authorChristian Herdtweck <christian.herdtweck@intra2net.com>
Tue, 26 May 2015 15:59:38 +0000 (17:59 +0200)
committerChristian Herdtweck <christian.herdtweck@intra2net.com>
Tue, 26 May 2015 15:59:38 +0000 (17:59 +0200)
src/dns/dnsresolver.cpp

index ff376ea..b9e7af6 100644 (file)
@@ -48,6 +48,7 @@ namespace Config
     const int PauseBeforeRetrySeconds = 1;
     const int StaleDataLongtermSeconds = 5*60;
     const int DNS_PORT = 53;
+    const std::size_t MAX_IPS_PER_HOST = 2;
 }
 
 DnsResolver::DnsResolver(IoServiceItem &io_serv,
@@ -413,6 +414,16 @@ void DnsResolver::handle_ips(const int recursion_count,
             addr_list.push_back(host_and_addr.second);
         }
     }
+
+    // limit number of IPs to be saved
+    if (addr_list.size() > Config::MAX_IPS_PER_HOST)
+    {
+        GlobalLogger.info() << LogPrefix << "Limit list of IPs from "
+            << addr_list.size() << " to " << Config::MAX_IPS_PER_HOST;
+        addr_list.resize(Config::MAX_IPS_PER_HOST);
+    }
+
+    // now save in cache
     ResolverBase::update_cache( only_host_for_ips, addr_list );
 
     // clean up