From 2a05c7af8fe66275c6f8aaadfccae476571e161c Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 1 Jun 2024 17:57:03 +0530 Subject: [PATCH] AllowedZoneManager: added retry mechanism for delayed save. --- .../Dns/ZoneManagers/AllowedZoneManager.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs index e1737fee..40c3bb8b 100644 --- a/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/AllowedZoneManager.cs @@ -61,17 +61,20 @@ namespace DnsServerCore.Dns.ZoneManagers { lock (_saveLock) { - try + if (_pendingSave) { - SaveZoneFileInternal(); - } - catch (Exception ex) - { - _dnsServer.LogManager.Write(ex); - } - finally - { - _pendingSave = false; + try + { + SaveZoneFileInternal(); + _pendingSave = false; + } + catch (Exception ex) + { + _dnsServer.LogManager.Write(ex); + + //set timer to retry again + _saveTimer.Change(SAVE_TIMER_INITIAL_INTERVAL, Timeout.Infinite); + } } } }); @@ -88,10 +91,10 @@ namespace DnsServerCore.Dns.ZoneManagers if (_disposed) return; - _saveTimer?.Dispose(); - lock (_saveLock) { + _saveTimer?.Dispose(); + if (_pendingSave) { try