mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-10 09:15:47 +00:00
Stop listener before waiting for channels to close.
Remove extra exception handling.
This commit is contained in:
@@ -32,24 +32,7 @@ namespace Renci.SshNet
|
||||
// consider port started when we're listening for inbound connections
|
||||
_status = ForwardedPortStatus.Started;
|
||||
|
||||
try
|
||||
{
|
||||
StartAccept(null);
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
// AcceptAsync will throw an ObjectDisposedException when the server is closed before
|
||||
// the listener has started accepting connections.
|
||||
//
|
||||
// this is only possible when the listener is stopped (from another thread) right
|
||||
// after it was started.
|
||||
StopPort(Session.ConnectionInfo.Timeout);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
StopPort(Session.ConnectionInfo.Timeout);
|
||||
RaiseExceptionEvent(ex);
|
||||
}
|
||||
StartAccept(null);
|
||||
}
|
||||
|
||||
private void StartAccept(SocketAsyncEventArgs e)
|
||||
|
||||
@@ -131,11 +131,10 @@ namespace Renci.SshNet
|
||||
|
||||
// signal existing channels that the port is closing
|
||||
base.StopPort(timeout);
|
||||
// prevent new requests from getting processed
|
||||
StopListener();
|
||||
// wait for open channels to close
|
||||
InternalStop(timeout);
|
||||
// prevent new requests from getting processed before we signal existing
|
||||
// channels that the port is closing
|
||||
StopListener();
|
||||
// mark port stopped
|
||||
_status = ForwardedPortStatus.Stopped;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user