Explorar el Código

Eliminate more possible race conditions.

drieseng hace 9 años
padre
commit
23f95f4190

+ 4 - 3
src/Renci.SshNet/ForwardedPortDynamic.NET.cs

@@ -77,10 +77,11 @@ namespace Renci.SshNet
                     }
                     finally
                     {
-                        if (Session != null)
+                        var session = Session;
+                        if (session != null)
                         {
-                            Session.ErrorOccured -= Session_ErrorOccured;
-                            Session.Disconnected -= Session_Disconnected;
+                            session.ErrorOccured -= Session_ErrorOccured;
+                            session.Disconnected -= Session_Disconnected;
                         }
                     }
                 });

+ 4 - 3
src/Renci.SshNet/ForwardedPortLocal.NET.cs

@@ -74,10 +74,11 @@ namespace Renci.SshNet
                     }
                     finally
                     {
-                        if (Session != null)
+                        var session = Session;
+                        if (session != null)
                         {
-                            Session.Disconnected -= Session_Disconnected;
-                            Session.ErrorOccured -= Session_ErrorOccured;
+                            session.Disconnected -= Session_Disconnected;
+                            session.ErrorOccured -= Session_ErrorOccured;
                         }
                     }
                 });

+ 1 - 1
src/Renci.SshNet/ForwardedPortRemote.cs

@@ -308,10 +308,10 @@ namespace Renci.SshNet
                 var session = Session;
                 if (session != null)
                 {
+                    Session = null;
                     session.RequestSuccessReceived -= Session_RequestSuccess;
                     session.RequestFailureReceived -= Session_RequestFailure;
                     session.ChannelOpenReceived -= Session_ChannelOpening;
-                    Session = null;
                 }
 
                 var globalRequestResponse = _globalRequestResponse;