From f050deb79f0fb404abfe163845f706bd0b5c2d9c Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 1 Jun 2024 17:57:49 +0530 Subject: [PATCH] BlockedZoneManager: added retry mechanism for delayed save. --- .../Dns/ZoneManagers/BlockedZoneManager.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs b/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs index 282fb63b..86880c47 100644 --- a/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.cs +++ b/DnsServerCore/Dns/ZoneManagers/BlockedZoneManager.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