diff --git a/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortDynamic.NET35.cs b/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortDynamic.NET35.cs new file mode 100644 index 00000000..ff20813b --- /dev/null +++ b/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortDynamic.NET35.cs @@ -0,0 +1,13 @@ +using System; +using System.Threading; + +namespace Renci.SshNet +{ + public partial class ForwardedPortDynamic + { + partial void ExecuteThread(Action action) + { + ThreadPool.QueueUserWorkItem((o) => { action(); }); + } + } +} diff --git a/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortLocal.NET35.cs b/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortLocal.NET35.cs index 86a534fc..0bbfec6d 100644 --- a/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortLocal.NET35.cs +++ b/Renci.SshClient/Renci.SshNet.NET35/ForwardedPortLocal.NET35.cs @@ -11,84 +11,9 @@ namespace Renci.SshNet /// public partial class ForwardedPortLocal { - private TcpListener _listener; - partial void ExecuteThread(Action action) { ThreadPool.QueueUserWorkItem((o) => { action(); }); } - - partial void InternalStart() - { - // If port already started don't start it again - if (this.IsStarted) - return; - - var ep = new IPEndPoint(Dns.GetHostAddresses(this.BoundHost)[0], (int)this.BoundPort); - - this._listener = new TcpListener(ep); - this._listener.Start(); - - this._listenerTaskCompleted = new ManualResetEvent(false); - this.ExecuteThread(() => - { - try - { - while (true) - { - var socket = this._listener.AcceptSocket(); - - this.ExecuteThread(() => - { - try - { - IPEndPoint originatorEndPoint = socket.RemoteEndPoint as IPEndPoint; - - this.RaiseRequestReceived(originatorEndPoint.Address.ToString(), (uint)originatorEndPoint.Port); - - var channel = this.Session.CreateChannel(); - - channel.Bind(this.Host, this.Port, socket); - } - catch (Exception exp) - { - this.RaiseExceptionEvent(exp); - } - }); - } - } - catch (SocketException exp) - { - if (!(exp.SocketErrorCode == SocketError.Interrupted)) - { - this.RaiseExceptionEvent(exp); - } - } - catch (Exception exp) - { - this.RaiseExceptionEvent(exp); - } - finally - { - this._listenerTaskCompleted.Set(); - } - }); - - this.IsStarted = true; - } - - partial void InternalStop() - { - // If port not started you cant stop it - if (!this.IsStarted) - return; - - this._listener.Stop(); - this._listenerTaskCompleted.WaitOne(this.Session.ConnectionInfo.Timeout); - this._listenerTaskCompleted.Dispose(); - this._listenerTaskCompleted = null; - - this.IsStarted = false; - } } } diff --git a/Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj b/Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj index fcbf3c44..bc428036 100644 --- a/Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj +++ b/Renci.SshClient/Renci.SshNet.NET35/Renci.SshNet.NET35.csproj @@ -217,9 +217,18 @@ ForwardedPort.cs + + ForwardedPortDynamic.cs + + + ForwardedPortDynamic.NET.cs + ForwardedPortLocal.cs + + ForwardedPortLocal.NET.cs + ForwardedPortRemote.cs @@ -729,6 +738,7 @@ + @@ -742,7 +752,7 @@ - +