From 0d75f701778a0900a58343c4c80c124279bc231f Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 11 Jun 2017 07:41:07 -0400 Subject: [PATCH] skip server connection if server is offline --- ShiftOS_TheReturn/SaveSystem.cs | 25 ++++++++++++++++--------- ShiftOS_TheReturn/ServerManager.cs | 24 ++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 9 deletions(-) diff --git a/ShiftOS_TheReturn/SaveSystem.cs b/ShiftOS_TheReturn/SaveSystem.cs index 18f8f78..b9bef47 100644 --- a/ShiftOS_TheReturn/SaveSystem.cs +++ b/ShiftOS_TheReturn/SaveSystem.cs @@ -163,22 +163,29 @@ namespace ShiftOS.Engine bool guidReceived = false; ServerManager.GUIDReceived += (str) => { - //Connection successful! Stop waiting! - guidReceived = true; + //Connection successful! Stop waiting! + guidReceived = true; Console.WriteLine("[inetd] Connection successful."); }; try { - - ServerManager.Initiate(UserConfig.Get().DigitalSocietyAddress, UserConfig.Get().DigitalSocietyPort); - //This haults the client until the connection is successful. - while (ServerManager.thisGuid == new Guid()) + if (ServerManager.ServerOnline) { - Thread.Sleep(10); + ServerManager.Initiate(UserConfig.Get().DigitalSocietyAddress, UserConfig.Get().DigitalSocietyPort); + //This haults the client until the connection is successful. + while (ServerManager.thisGuid == new Guid()) + { + Thread.Sleep(10); + } + Console.WriteLine("[inetd] DHCP GUID recieved, finished setup"); + FinishBootstrap(); + } + else + { + Console.WriteLine("[inetd] No suitable network interface card found, skipping network connection."); + FinishBootstrap(); } - Console.WriteLine("[inetd] DHCP GUID recieved, finished setup"); - FinishBootstrap(); } catch (Exception ex) { diff --git a/ShiftOS_TheReturn/ServerManager.cs b/ShiftOS_TheReturn/ServerManager.cs index be4f086..00f9653 100644 --- a/ShiftOS_TheReturn/ServerManager.cs +++ b/ShiftOS_TheReturn/ServerManager.cs @@ -38,6 +38,7 @@ using System.Net.Sockets; using System.Diagnostics; using System.IO; using System.Reflection; +using System.Net.NetworkInformation; namespace ShiftOS.Engine { @@ -46,6 +47,29 @@ namespace ShiftOS.Engine /// public static class ServerManager { + + public static bool ServerOnline + { + get + { + try + { + Ping myPing = new Ping(); + String host = UserConfig.Get().DigitalSocietyAddress; + byte[] buffer = new byte[32]; + int timeout = 1000; + PingOptions pingOptions = new PingOptions(); + PingReply reply = myPing.Send(host, timeout, buffer, pingOptions); + return (reply.Status == IPStatus.Success); + } + catch (Exception) + { + return false; + } + } + } + + /// /// Print connection diagnostic information. ///