From 1591558fc000f4330744a31e934c87cb5e4bb2c4 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 Sep 2013 11:02:40 -0400 Subject: [PATCH] fixes #526 - Make server startup error message friendlier --- .../ServerManager/ServerManager.cs | 9 ++++++++- .../WebSocket/AlchemyServer.cs | 12 +++++++++++- MediaBrowser.ServerApplication/ApplicationHost.cs | 4 ++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs index 6cddcdf2ee..1a56005dca 100644 --- a/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs +++ b/MediaBrowser.Server.Implementations/ServerManager/ServerManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common; +using System.Net.Sockets; +using MediaBrowser.Common; using MediaBrowser.Common.Net; using MediaBrowser.Controller; using MediaBrowser.Controller.Configuration; @@ -169,6 +170,12 @@ namespace MediaBrowser.Server.Implementations.ServerManager HttpServer.EnableHttpRequestLogging = ConfigurationManager.Configuration.EnableHttpLevelLogging; HttpServer.Start(_applicationHost.HttpServerUrlPrefix); } + catch (SocketException ex) + { + _logger.ErrorException("The http server is unable to start due to a Socket error. This can occasionally happen when the operating system takes longer than usual to release the IP bindings from the previous session. This can take up to five minutes. Please try waiting or rebooting the system.", ex); + + throw; + } catch (HttpListenerException ex) { _logger.ErrorException("Error starting Http Server", ex); diff --git a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs index 797c4a80c4..6649fd1978 100644 --- a/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs +++ b/MediaBrowser.Server.Implementations/WebSocket/AlchemyServer.cs @@ -4,6 +4,7 @@ using MediaBrowser.Common.Net; using MediaBrowser.Model.Logging; using System; using System.Net; +using System.Net.Sockets; namespace MediaBrowser.Server.Implementations.WebSocket { @@ -60,7 +61,16 @@ namespace MediaBrowser.Server.Implementations.WebSocket TimeOut = TimeSpan.FromHours(12) }; - WebSocketServer.Start(); + try + { + WebSocketServer.Start(); + } + catch (SocketException ex) + { + _logger.ErrorException("The web socket server is unable to start on port {0} due to a Socket error. This can occasionally happen when the operating system takes longer than usual to release the IP bindings from the previous session. This can take up to five minutes. Please try waiting or rebooting the system.", ex, portNumber); + + throw; + } Port = portNumber; diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 3224205451..57b39c209a 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -1,5 +1,4 @@ -using System.Threading; -using MediaBrowser.Api; +using MediaBrowser.Api; using MediaBrowser.Common; using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Constants; @@ -57,6 +56,7 @@ using System.Net; using System.Net.Cache; using System.Net.Http; using System.Reflection; +using System.Threading; using System.Threading.Tasks; namespace MediaBrowser.ServerApplication