|  | @@ -13,6 +13,7 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |      public partial class ForwardedPortDynamic
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          private TcpListener _listener;
 | 
	
		
			
				|  |  | +        private object _listenerLocker = new object();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          partial void InternalStart()
 | 
	
		
			
				|  |  |          {
 | 
	
	
		
			
				|  | @@ -38,6 +39,12 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      while (true)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | +                        lock (this._listenerLocker)
 | 
	
		
			
				|  |  | +                        {
 | 
	
		
			
				|  |  | +                            if (this._listener == null)
 | 
	
		
			
				|  |  | +                                break;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                          var socket = this._listener.AcceptSocket();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          this.ExecuteThread(() =>
 | 
	
	
		
			
				|  | @@ -104,11 +111,14 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              if (!this.IsStarted)
 | 
	
		
			
				|  |  |                  return;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            this._listener.Stop();
 | 
	
		
			
				|  |  | +            lock (this._listenerLocker)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                this._listener.Stop();
 | 
	
		
			
				|  |  | +                this._listener = null;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              this._listenerTaskCompleted.WaitOne(this.Session.ConnectionInfo.Timeout);
 | 
	
		
			
				|  |  |              this._listenerTaskCompleted.Dispose();
 | 
	
		
			
				|  |  |              this._listenerTaskCompleted = null;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |              this.IsStarted = false;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -271,7 +281,5 @@ namespace Renci.SshNet
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              return text.ToString();
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 |