/**
* Checks if update will exceed max update interval.
* @param current_time Current time.
+ * @param changed_to_online True if we just changed to online, false if we were already online
* @return True if update is allowed, false if update would exceed max update interval.
*/
-bool Service::update_allowed(const time_t current_time)
+bool Service::update_allowed(const time_t current_time, bool changed_to_online)
{
list<time_t>::iterator iter;
int i=0;
{
if ( (i == (MaxUpdatesWithinInterval-1)) && ( (*iter + ((time_t)UpdateInterval*60)) >= current_time ) )
{
- Log->print_update_not_allowed(current_time,*iter,MaxUpdatesWithinInterval,get_service_name());
+ Log->print_update_not_allowed(changed_to_online, current_time,*iter,MaxUpdatesWithinInterval,get_service_name());
return false;
}
i++;
/**
* Service update method, common to each service.
* @param ip The new ip to set for the hostname.
+ * @param current_time Current time
+ * @param changed_to_online True if we just changed to online, false if we were already online
*/
-void Service::update(const string& ip, const time_t current_time)
+void Service::update(const string& ip, const time_t current_time, bool changed_to_online)
{
const std::string service_name = get_service_name();
return;
}
- Log->print_update_service(service_name);
-
// test if update is permitted by UpdateInterval Status
- if ( update_allowed(current_time) )
+ if ( update_allowed(current_time, changed_to_online) )
{
+ Log->print_update_service(service_name);
+
if ( perform_update(ip) == 0 )
{
// if update was successful, we need to set the Lastupdated and ActualIP base member.