mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-01 13:54:53 +00:00
Hunting down program crash when network cable is pulled from server. Client.ErrorOccurred is not catching this
This commit is contained in:
@@ -67,7 +67,7 @@ namespace PepperDash.Core
|
||||
/// </summary>
|
||||
public ushort UIsConnected
|
||||
{
|
||||
get { return (ushort)(ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED ? 1 : 0); }
|
||||
get { return (ushort)(IsConnected ? 1 : 0); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Disconnect the clients and put away it's resources.
|
||||
/// </summary>
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Handler for errors on the stream...
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 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
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -10,8 +10,8 @@
|
||||
<ArchiveName />
|
||||
</RequiredInfo>
|
||||
<OptionalInfo>
|
||||
<CompiledOn>12/5/2016 8:18:01 PM</CompiledOn>
|
||||
<CompilerRev>1.0.0.36510</CompilerRev>
|
||||
<CompiledOn>12/6/2016 9:36:24 AM</CompiledOn>
|
||||
<CompilerRev>1.0.0.17290</CompilerRev>
|
||||
</OptionalInfo>
|
||||
<Plugin>
|
||||
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
||||
|
||||
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
MainAssembly=PepperDash_Core.dll:c93675cdf88b90cd5c0118d288234a54
|
||||
MainAssembly=PepperDash_Core.dll:c8ab0c5c399e1cd7b79710c5a208e022
|
||||
MainAssemblyMinFirmwareVersion=1.007.0017
|
||||
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
||||
ü
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user