diff --git a/DnsServerCore/Auth/AuthManager.cs b/DnsServerCore/Auth/AuthManager.cs index 22c82c08..55ffad2d 100644 --- a/DnsServerCore/Auth/AuthManager.cs +++ b/DnsServerCore/Auth/AuthManager.cs @@ -66,17 +66,20 @@ namespace DnsServerCore.Auth { lock (_saveLock) { - try + if (_pendingSave) { - SaveConfigFileInternal(); - } - catch (Exception ex) - { - _log.Write(ex); - } - finally - { - _pendingSave = false; + try + { + SaveConfigFileInternal(); + _pendingSave = false; + } + catch (Exception ex) + { + _log.Write(ex); + + //set timer to retry again + _saveTimer.Change(SAVE_TIMER_INITIAL_INTERVAL, Timeout.Infinite); + } } } }); @@ -93,10 +96,11 @@ namespace DnsServerCore.Auth if (_disposed) return; - _saveTimer?.Dispose(); - lock (_saveLock) { + _saveTimer?.Dispose(); + + //always save config here try { SaveConfigFileInternal();