From 71ece029bfe4c1f495d7c233e6007813d97c2d74 Mon Sep 17 00:00:00 2001 From: Nick Genovese Date: Thu, 20 Oct 2022 13:38:04 -0400 Subject: [PATCH] fix: added a finally block added a finally block in case all else fails to switch out the connection status --- .../Comm/GenericSshClientV2.cs | 37 ++++++++++++------- 1 file changed, 23 insertions(+), 14 deletions(-) diff --git a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClientV2.cs b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClientV2.cs index dfb6655..0553b37 100644 --- a/Pepperdash Core/Pepperdash Core/Comm/GenericSshClientV2.cs +++ b/Pepperdash Core/Pepperdash Core/Comm/GenericSshClientV2.cs @@ -279,7 +279,7 @@ namespace PepperDash.Core Debug.Console(1, this, "Ingoring connection request while connect/disconnect in progress..."); if (!connectTimer.Disposed && AutoReconnect) - connectTimer.Reset(10000); + connectTimer.Reset(AutoReconnectIntervalMs); } } @@ -378,21 +378,30 @@ namespace PepperDash.Core private void DisconnectInternal(SocketStatus status) { - DisposeOfStream(); - DisposeOfClient(); - DisposeOfAuthMethods(); - - Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Disconnect Complete"); - ClientStatus = status; - - DisposeOfTimer(disconnectTimer); - if (!connectTimer.Disposed && AutoReconnect) + try { - Debug.Console(1, this, "Autoreconnect try again soon"); - connectTimer.Reset(AutoReconnectIntervalMs); - } + DisposeOfStream(); + DisposeOfClient(); + DisposeOfAuthMethods(); - Interlocked.Exchange(ref connectionProgress, ConnectionProgress.Idle); + Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Disconnect Complete"); + ClientStatus = status; + + DisposeOfTimer(disconnectTimer); + if (!connectTimer.Disposed && AutoReconnect) + { + Debug.Console(1, this, "Autoreconnect try again soon"); + connectTimer.Reset(AutoReconnectIntervalMs); + } + } + catch (Exception ex) + { + Debug.Console(1, this, Debug.ErrorLogLevel.Notice, "Caught a general exception in disconnect:{0}", ex); + } + finally + { + Interlocked.Exchange(ref connectionProgress, ConnectionProgress.Idle); + } } private void DisposeOfAuthMethods()