aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Mono/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Mono/Program.cs')
-rw-r--r--MediaBrowser.Server.Mono/Program.cs33
1 files changed, 32 insertions, 1 deletions
diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs
index 10a6c6fb9..7cd80f5c9 100644
--- a/MediaBrowser.Server.Mono/Program.cs
+++ b/MediaBrowser.Server.Mono/Program.cs
@@ -1,4 +1,3 @@
-using System.IO;
using MediaBrowser.Common.Implementations.IO;
using MediaBrowser.Common.Implementations.Logging;
using MediaBrowser.Model.Logging;
@@ -8,6 +7,8 @@ using MediaBrowser.Server.Startup.Common;
using Microsoft.Win32;
using System;
using System.Diagnostics;
+using System.IO;
+using System.Linq;
using System.Net;
using System.Net.Security;
using System.Reflection;
@@ -136,6 +137,36 @@ namespace MediaBrowser.Server.Mono
{
ApplicationTaskCompletionSource.SetResult (true);
}
+
+ public static void Restart()
+ {
+ _logger.Info("Disposing app host");
+ _appHost.Dispose();
+
+ _logger.Info("Starting new instance");
+
+ var currentProcess = Process.GetCurrentProcess();
+
+ var args = Environment.GetCommandLineArgs()
+ .Select(NormalizeCommandLineArgument);
+
+ var commandLineArgsString = string.Join(" ", args.ToArray());
+
+ Process.Start(currentProcess.MainModule.FileName, commandLineArgsString);
+
+ _logger.Info("Calling Environment.Exit");
+ Environment.Exit(0);
+ }
+
+ private static string NormalizeCommandLineArgument(string arg)
+ {
+ if (arg.IndexOf(" ", StringComparison.OrdinalIgnoreCase) == -1)
+ {
+ return arg;
+ }
+
+ return "\"" + arg + "\"";
+ }
}
class NoCheckCertificatePolicy : ICertificatePolicy