Enhanced update logic to respect not activated hostnames. If a hostname could not...
[bpdyndnsd] / src / updater.cpp
index 712200d..28a58fe 100644 (file)
@@ -255,7 +255,8 @@ void Updater::update_services(bool changed_to_online) const
         Log->print_cached_dns_entry(hostname, ip_dns_recheck, ip_last_update, ip_host);
 
         // Test if the DNS-Record could not be found.
-        if ( ip_dns_recheck.empty() )
+        // If DNS-Record was not found but service was not activated, the hostname could be deactivated, offline or not existent. In this case try a ordinary update.
+        if ( ip_dns_recheck.empty() && service->get_activated() )
         {
             Log->print_dns_lookup_failed(changed_to_online, hostname);
             continue;
@@ -273,7 +274,16 @@ void Updater::update_services(bool changed_to_online) const
         if ( ip_last_update != ip_host )
         {
             // Update
-            Log->print_update_service(hostname, ip_dns_recheck, ip_last_update, ip_host, lastupdated);
+            if ( !ip_dns_recheck.empty() )
+            {
+                Log->print_update_service(hostname, ip_dns_recheck, ip_last_update, ip_host, lastupdated);
+            }
+            else
+            {
+                // Service gets updated the first time and no DNS-Record was found. This is either a initial update or the hostname is really not available.
+                Log->print_update_service(hostname, "<NO IP SET>", ip_last_update, ip_host, lastupdated);
+            }
+
             service->update(ip_host, current_time, changed_to_online);
         }
         else