diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs index 5b8bfd7..c0fa9b2 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClient.cs @@ -67,7 +67,7 @@ namespace PepperDash.Core /// public ushort UIsConnected { - get { return (ushort)(ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED ? 1 : 0); } + get { return (ushort)(IsConnected ? 1 : 0); } } /// @@ -186,7 +186,7 @@ namespace PepperDash.Core public void Connect() { ConnectEnabled = true; - Debug.Console(1, this, "attempting connect, IsConnected={0}", Client != null ? Client.IsConnected : false); + Debug.Console(1, this, "attempting connect"); // Cancel reconnect if running. if (ReconnectTimer != null) @@ -219,8 +219,11 @@ namespace PepperDash.Core { Debug.Console(2, this, "Cleaning up disconnected client"); Client.ErrorOccurred -= Client_ErrorOccurred; - if(TheStream != null) + if (TheStream != null) + { TheStream.DataReceived -= Stream_DataReceived; + TheStream.ErrorOccurred += TheStream_ErrorOccurred; + } TheStream = null; } @@ -245,6 +248,7 @@ namespace PepperDash.Core Client.SendKeepAlive(); TheStream = Client.CreateShellStream("PDTShell", 100, 80, 100, 200, 65534); TheStream.DataReceived += Stream_DataReceived; + TheStream.ErrorOccurred += TheStream_ErrorOccurred; Debug.Console(1, this, "Connected"); ClientStatus = SocketStatus.SOCKET_STATUS_CONNECTED; PreviousHostname = Hostname; @@ -252,7 +256,7 @@ namespace PepperDash.Core PreviousPort = Port; PreviousUsername = Username; } - return; + return; // Success will not pass here } catch (SshConnectionException e) { @@ -280,6 +284,8 @@ namespace PepperDash.Core HandleConnectionFailure(); } + + /// /// Disconnect the clients and put away it's resources. /// @@ -334,6 +340,7 @@ namespace PepperDash.Core if (TheStream != null) { TheStream.DataReceived -= Stream_DataReceived; + TheStream.ErrorOccurred += TheStream_ErrorOccurred; TheStream.Close(); TheStream.Dispose(); TheStream = null; @@ -376,6 +383,18 @@ namespace PepperDash.Core } } + /// + /// Handler for errors on the stream... + /// + /// + /// + void TheStream_ErrorOccurred(object sender, ExceptionEventArgs e) + { + Debug.Console(1, this, "Unhandled SSH STREAM error: {0}", e.Exception); + ClientStatus = SocketStatus.SOCKET_STATUS_BROKEN_REMOTELY; + HandleConnectionFailure(); + } + /// /// Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange /// event @@ -398,10 +417,6 @@ namespace PepperDash.Core { if (ConnectionChange != null) ConnectionChange(this, new GenericSocketStatusChageEventArgs(this)); - - //var handler = SocketStatusChange; - //if (handler != null) - // SocketStatusChange(this); } #region IBasicCommunication Members diff --git a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo index 5c2442a..dfd37af 100644 Binary files a/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo and b/Pepperdash Core/Pepperdash Core/PepperDash_Core.projectinfo differ diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz index a8703d1..10ecd4c 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz and b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.clz differ diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config index 8502ad2..b25d07b 100644 --- a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config +++ b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.config @@ -10,8 +10,8 @@ - 12/5/2016 8:18:01 PM - 1.0.0.36510 + 12/6/2016 9:36:24 AM + 1.0.0.17290 Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 diff --git a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll index 88526c5..daafca1 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll and b/Pepperdash Core/Pepperdash Core/bin/PepperDash_Core.dll differ diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.info b/Pepperdash Core/Pepperdash Core/bin/manifest.info index 3748c60..dae78c2 100644 --- a/Pepperdash Core/Pepperdash Core/bin/manifest.info +++ b/Pepperdash Core/Pepperdash Core/bin/manifest.info @@ -1,4 +1,4 @@ -MainAssembly=PepperDash_Core.dll:c93675cdf88b90cd5c0118d288234a54 +MainAssembly=PepperDash_Core.dll:c8ab0c5c399e1cd7b79710c5a208e022 MainAssemblyMinFirmwareVersion=1.007.0017 MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e ü diff --git a/Pepperdash Core/Pepperdash Core/bin/manifest.ser b/Pepperdash Core/Pepperdash Core/bin/manifest.ser index 846db1f..f1ace9f 100644 Binary files a/Pepperdash Core/Pepperdash Core/bin/manifest.ser and b/Pepperdash Core/Pepperdash Core/bin/manifest.ser differ