|  | @@ -168,6 +168,9 @@ func (m *Client) monitor() {
 | 
	
		
			
				|  |  |  		case id := <-m.session2Remove:
 | 
	
		
			
				|  |  |  			m.access.Lock()
 | 
	
		
			
				|  |  |  			delete(m.sessions, id)
 | 
	
		
			
				|  |  | +			if len(m.sessions) == 0 {
 | 
	
		
			
				|  |  | +				m.cancel()
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  |  			m.access.Unlock()
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  	}
 | 
	
	
		
			
				|  | @@ -177,6 +180,9 @@ func (m *Client) cleanup() {
 | 
	
		
			
				|  |  |  	m.access.Lock()
 | 
	
		
			
				|  |  |  	defer m.access.Unlock()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +	m.inboundRay.InboundInput().Close()
 | 
	
		
			
				|  |  | +	m.inboundRay.InboundOutput().CloseError()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	for _, s := range m.sessions {
 | 
	
		
			
				|  |  |  		s.closeUplink()
 | 
	
		
			
				|  |  |  		s.closeDownlink()
 |