mirror of
https://github.com/sshnet/SSH.NET.git
synced 2026-09-11 01:36:39 +00:00
Remove extra exception handling.
Stop listener first, before we wait for open channels to close.
This commit is contained in:
@@ -17,6 +17,8 @@ namespace Renci.SshNet
|
||||
|
||||
partial void InternalStart()
|
||||
{
|
||||
InitializePendingChannelCountdown();
|
||||
|
||||
var ip = IPAddress.Any;
|
||||
if (!string.IsNullOrEmpty(BoundHost))
|
||||
{
|
||||
@@ -32,29 +34,10 @@ namespace Renci.SshNet
|
||||
Session.ErrorOccured += Session_ErrorOccured;
|
||||
Session.Disconnected += Session_Disconnected;
|
||||
|
||||
InitializePendingChannelCountdown();
|
||||
StartAccept(null);
|
||||
|
||||
// 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);
|
||||
}
|
||||
}
|
||||
|
||||
private void StartAccept(SocketAsyncEventArgs e)
|
||||
|
||||
@@ -82,11 +82,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