From f95b833df07faa7ce0f345e7f7a36604e24f8019 Mon Sep 17 00:00:00 2001 From: Shreyas Zare Date: Sat, 17 Nov 2018 13:07:14 +0530 Subject: [PATCH] DnsWebService: added error logging for service start and stop events. --- DnsServerCore/DnsWebService.cs | 96 ++++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 39 deletions(-) diff --git a/DnsServerCore/DnsWebService.cs b/DnsServerCore/DnsWebService.cs index 1a1dfe2e..64a5c2ec 100644 --- a/DnsServerCore/DnsWebService.cs +++ b/DnsServerCore/DnsWebService.cs @@ -3250,38 +3250,47 @@ namespace DnsServerCore if (_state != ServiceState.Stopped) return; - _dnsServer = new DnsServer(); - _dnsServer.LogManager = _log; - _dnsServer.StatsManager = _stats; - - LoadZoneFiles(); - LoadConfigFile(); - LoadAllowedZoneFile(); - LoadBlockedZoneFile(); - - _dnsServer.Start(); - try { - _webService = new HttpListener(); - _webService.Prefixes.Add("http://*:" + _webServicePort + "/"); - _webService.Start(); + _dnsServer = new DnsServer(); + _dnsServer.LogManager = _log; + _dnsServer.StatsManager = _stats; + + LoadZoneFiles(); + LoadConfigFile(); + LoadAllowedZoneFile(); + LoadBlockedZoneFile(); + + _dnsServer.Start(); + + try + { + _webService = new HttpListener(); + _webService.Prefixes.Add("http://*:" + _webServicePort + "/"); + _webService.Start(); + } + catch + { + _webService = new HttpListener(); + _webService.Prefixes.Add("http://localhost:" + _webServicePort + "/"); + _webService.Prefixes.Add("http://127.0.0.1:" + _webServicePort + "/"); + _webService.Start(); + } + + _webServiceThread = new Thread(AcceptWebRequestAsync); + _webServiceThread.IsBackground = true; + _webServiceThread.Start(); + + _state = ServiceState.Running; + + _log.Write(new IPEndPoint(IPAddress.Loopback, _webServicePort), "DNS Web Service (v" + _currentVersion + ") was started successfully."); } - catch + catch (Exception ex) { - _webService = new HttpListener(); - _webService.Prefixes.Add("http://localhost:" + _webServicePort + "/"); - _webService.Prefixes.Add("http://127.0.0.1:" + _webServicePort + "/"); - _webService.Start(); + _log.Write("Failed to start DNS Web Service (v" + _currentVersion + ")"); + _log.Write(ex); + throw; } - - _webServiceThread = new Thread(AcceptWebRequestAsync); - _webServiceThread.IsBackground = true; - _webServiceThread.Start(); - - _state = ServiceState.Running; - - _log.Write(new IPEndPoint(IPAddress.Loopback, _webServicePort), "DNS Web Service (v" + _currentVersion + ") was started successfully."); } public void Stop() @@ -3293,19 +3302,28 @@ namespace DnsServerCore try { - _webServiceThread.Abort(); + try + { + _webServiceThread.Abort(); + } + catch (PlatformNotSupportedException) + { } + + _webService.Stop(); + _dnsServer.Stop(); + + StopBlockListUpdateTimer(); + + _state = ServiceState.Stopped; + + _log.Write(new IPEndPoint(IPAddress.Loopback, _webServicePort), "DNS Web Service was stopped successfully."); + } + catch (Exception ex) + { + _log.Write("Failed to stop DNS Web Service (v" + _currentVersion + ")"); + _log.Write(ex); + throw; } - catch (PlatformNotSupportedException) - { } - - _webService.Stop(); - _dnsServer.Stop(); - - StopBlockListUpdateTimer(); - - _state = ServiceState.Stopped; - - _log.Write(new IPEndPoint(IPAddress.Loopback, _webServicePort), "DNS Web Service was stopped successfully."); } #endregion