From 40f930591a96fb8c4cdf5497a2f2f686fbc26ae9 Mon Sep 17 00:00:00 2001 From: kaso17 Date: Thu, 26 Jan 2017 13:54:52 +0100 Subject: [PATCH] improve Address already in use error handling --- src/Jackett/Services/ServerService.cs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Jackett/Services/ServerService.cs b/src/Jackett/Services/ServerService.cs index eda06d206..1cc1b86b1 100644 --- a/src/Jackett/Services/ServerService.cs +++ b/src/Jackett/Services/ServerService.cs @@ -17,6 +17,7 @@ using System.IO; using System.Linq; using System.Net; using System.Net.NetworkInformation; +using System.Net.Sockets; using System.Reflection; using System.Runtime.InteropServices; using System.Security.Cryptography; @@ -187,7 +188,20 @@ namespace Jackett.Services var startOptions = new StartOptions(); config.GetListenAddresses().ToList().ForEach(u => startOptions.Urls.Add(u)); Startup.BasePath = BasePath(); - _server = WebApp.Start(startOptions); + try + { + _server = WebApp.Start(startOptions); + } + catch (TargetInvocationException e) + { + var inner = e.InnerException; + if (inner is SocketException && ((SocketException)inner).SocketErrorCode == SocketError.AddressAlreadyInUse) + { + logger.Error("Address already in use: Most likely Jackett is already running"); + Environment.Exit(1); + } + throw e; + } logger.Debug("Web server started"); updater.StartUpdateChecker(); }