mirror of
https://github.com/PepperDash/PepperDashCore.git
synced 2026-02-15 04:34:46 +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>
|
/// </summary>
|
||||||
public ushort UIsConnected
|
public ushort UIsConnected
|
||||||
{
|
{
|
||||||
get { return (ushort)(ClientStatus == SocketStatus.SOCKET_STATUS_CONNECTED ? 1 : 0); }
|
get { return (ushort)(IsConnected ? 1 : 0); }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -186,7 +186,7 @@ namespace PepperDash.Core
|
|||||||
public void Connect()
|
public void Connect()
|
||||||
{
|
{
|
||||||
ConnectEnabled = true;
|
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.
|
// Cancel reconnect if running.
|
||||||
if (ReconnectTimer != null)
|
if (ReconnectTimer != null)
|
||||||
@@ -219,8 +219,11 @@ namespace PepperDash.Core
|
|||||||
{
|
{
|
||||||
Debug.Console(2, this, "Cleaning up disconnected client");
|
Debug.Console(2, this, "Cleaning up disconnected client");
|
||||||
Client.ErrorOccurred -= Client_ErrorOccurred;
|
Client.ErrorOccurred -= Client_ErrorOccurred;
|
||||||
if(TheStream != null)
|
if (TheStream != null)
|
||||||
|
{
|
||||||
TheStream.DataReceived -= Stream_DataReceived;
|
TheStream.DataReceived -= Stream_DataReceived;
|
||||||
|
TheStream.ErrorOccurred += TheStream_ErrorOccurred;
|
||||||
|
}
|
||||||
TheStream = null;
|
TheStream = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,6 +248,7 @@ namespace PepperDash.Core
|
|||||||
Client.SendKeepAlive();
|
Client.SendKeepAlive();
|
||||||
TheStream = Client.CreateShellStream("PDTShell", 100, 80, 100, 200, 65534);
|
TheStream = Client.CreateShellStream("PDTShell", 100, 80, 100, 200, 65534);
|
||||||
TheStream.DataReceived += Stream_DataReceived;
|
TheStream.DataReceived += Stream_DataReceived;
|
||||||
|
TheStream.ErrorOccurred += TheStream_ErrorOccurred;
|
||||||
Debug.Console(1, this, "Connected");
|
Debug.Console(1, this, "Connected");
|
||||||
ClientStatus = SocketStatus.SOCKET_STATUS_CONNECTED;
|
ClientStatus = SocketStatus.SOCKET_STATUS_CONNECTED;
|
||||||
PreviousHostname = Hostname;
|
PreviousHostname = Hostname;
|
||||||
@@ -252,7 +256,7 @@ namespace PepperDash.Core
|
|||||||
PreviousPort = Port;
|
PreviousPort = Port;
|
||||||
PreviousUsername = Username;
|
PreviousUsername = Username;
|
||||||
}
|
}
|
||||||
return;
|
return; // Success will not pass here
|
||||||
}
|
}
|
||||||
catch (SshConnectionException e)
|
catch (SshConnectionException e)
|
||||||
{
|
{
|
||||||
@@ -280,6 +284,8 @@ namespace PepperDash.Core
|
|||||||
HandleConnectionFailure();
|
HandleConnectionFailure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Disconnect the clients and put away it's resources.
|
/// Disconnect the clients and put away it's resources.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -334,6 +340,7 @@ namespace PepperDash.Core
|
|||||||
if (TheStream != null)
|
if (TheStream != null)
|
||||||
{
|
{
|
||||||
TheStream.DataReceived -= Stream_DataReceived;
|
TheStream.DataReceived -= Stream_DataReceived;
|
||||||
|
TheStream.ErrorOccurred += TheStream_ErrorOccurred;
|
||||||
TheStream.Close();
|
TheStream.Close();
|
||||||
TheStream.Dispose();
|
TheStream.Dispose();
|
||||||
TheStream = null;
|
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>
|
/// <summary>
|
||||||
/// Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange
|
/// Error event handler for client events - disconnect, etc. Will forward those events via ConnectionChange
|
||||||
/// event
|
/// event
|
||||||
@@ -398,10 +417,6 @@ namespace PepperDash.Core
|
|||||||
{
|
{
|
||||||
if (ConnectionChange != null)
|
if (ConnectionChange != null)
|
||||||
ConnectionChange(this, new GenericSocketStatusChageEventArgs(this));
|
ConnectionChange(this, new GenericSocketStatusChageEventArgs(this));
|
||||||
|
|
||||||
//var handler = SocketStatusChange;
|
|
||||||
//if (handler != null)
|
|
||||||
// SocketStatusChange(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#region IBasicCommunication Members
|
#region IBasicCommunication Members
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -10,8 +10,8 @@
|
|||||||
<ArchiveName />
|
<ArchiveName />
|
||||||
</RequiredInfo>
|
</RequiredInfo>
|
||||||
<OptionalInfo>
|
<OptionalInfo>
|
||||||
<CompiledOn>12/5/2016 8:18:01 PM</CompiledOn>
|
<CompiledOn>12/6/2016 9:36:24 AM</CompiledOn>
|
||||||
<CompilerRev>1.0.0.36510</CompilerRev>
|
<CompilerRev>1.0.0.17290</CompilerRev>
|
||||||
</OptionalInfo>
|
</OptionalInfo>
|
||||||
<Plugin>
|
<Plugin>
|
||||||
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
<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
|
MainAssemblyMinFirmwareVersion=1.007.0017
|
||||||
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
||||||
ü
|
ü
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user