Remove extra exception handling.

Stop listener first, before we wait for open channels to close.
This commit is contained in:
drieseng
2016-07-24 09:48:54 +02:00
parent 44c21ca7af
commit 5498b8f74a
2 changed files with 5 additions and 23 deletions
+3 -20
View File
@@ -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)
+2 -3
View File
@@ -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;
}