|
|
@@ -655,7 +655,7 @@ namespace Renci.SshNet
|
|
|
{
|
|
|
this._isDisconnecting = true;
|
|
|
|
|
|
- // send disconnect message to the server if the connection is still open
|
|
|
+ // send disconnect message to the server if the connection is still open
|
|
|
// and the disconnect message has not yet been sent
|
|
|
//
|
|
|
// note that this should also cause the listener thread to be stopped as
|
|
|
@@ -744,10 +744,6 @@ namespace Renci.SshNet
|
|
|
/// <exception cref="SshConnectionException">A received package was invalid or failed the message integrity check.</exception>
|
|
|
/// <exception cref="SshOperationTimeoutException">None of the handles are signaled in time and the session is not disconnecting.</exception>
|
|
|
/// <exception cref="SocketException">A socket error was signaled while receiving messages from the server.</exception>
|
|
|
- /// <remarks>
|
|
|
- /// When neither handles are signaled in time and the session is not closing, then the
|
|
|
- /// session is disconnected.
|
|
|
- /// </remarks>
|
|
|
internal void WaitOnHandle(WaitHandle waitHandle, TimeSpan timeout)
|
|
|
{
|
|
|
if (waitHandle == null)
|
|
|
@@ -777,21 +773,14 @@ namespace Renci.SshNet
|
|
|
}
|
|
|
break;
|
|
|
case WaitHandle.WaitTimeout:
|
|
|
- // when the session is NOT disconnecting, then we want to disconnect
|
|
|
- // the session altogether in case of a timeout, and throw a
|
|
|
- // SshOperationTimeoutException
|
|
|
- //
|
|
|
// when the session is disconnecting, a timeout is likely when no
|
|
|
// network connectivity is available; depending on the configured
|
|
|
// timeout either the WaitAny times out first or a SocketException
|
|
|
// detailing a timeout thrown hereby completing the listener thread
|
|
|
// (which makes us end up in case 1). Either way, we do not want to
|
|
|
- // disconnect while we're already disconnecting and we do not want
|
|
|
- // to report an exception to the client when we're disconnecting
|
|
|
- // anyway
|
|
|
+ // report an exception to the client when we're disconnecting anyway
|
|
|
if (!_isDisconnecting)
|
|
|
{
|
|
|
- this.Disconnect(DisconnectReason.ByApplication, "Operation timeout");
|
|
|
throw new SshOperationTimeoutException("Session operation has timed out");
|
|
|
}
|
|
|
break;
|