Fixed burnt IP detection issue. Moved burnt IP detection into update_allowed().
[bpdyndnsd] / src / updater.cpp
index cad0ca2..712200d 100644 (file)
@@ -244,45 +244,8 @@ void Updater::update_services(bool changed_to_online) const
         string hostname = service->get_hostname();
         time_t current_time = time(NULL);
 
-        // Try to get the last update time of the service if there is one.
-        // And check for burnt IP, too.
-        std::map<time_t,std::string> last_updates = service->get_last_updates(); /*lint !e1793 */
-        time_t lastupdated = 0;
-
-        int last_updates_size = last_updates.size();
-        int max_equal_updates_in_succession = service->get_max_equal_updates_in_succession();
-
-        Log->print_last_updates(ip_host,max_equal_updates_in_succession,last_updates,service->get_hostname());
-
-        // Only check for burnt IP address if there are at least max_equal_updates_in_succession entries in the last_updates map.
-        if ( (max_equal_updates_in_succession != 0) && (last_updates_size >= max_equal_updates_in_succession) )
-        {
-            bool ip_burnt = true;
-            int i = 0;
-            // Reverse iterate "last_updates" list so the latest update
-            // will be the first entry (map key is the unix timestamp)
-            for ( std::map<time_t,std::string>::reverse_iterator r_iter = last_updates.rbegin();
-                  (r_iter != last_updates.rend()) && (i < max_equal_updates_in_succession); r_iter++ )
-            {
-                if ( i == 0 )
-                    lastupdated = r_iter->first;
-
-                if ( ip_host != r_iter->second )
-                {
-                    ip_burnt = false;
-                    break;
-                }
-
-                i++;
-            }
-
-            if ( ip_burnt )
-            {
-                // IP Address is burnt. Too many updates in succession with the same IP.
-                Log->print_ip_burnt(ip_host,service->get_hostname());
-                continue;
-            }
-        }
+        // Get the last update time of the service.
+        time_t lastupdated = service->get_last_update_time();
 
         Log->print_check_service_update(hostname, current_time, lastupdated);