mirror of https://gogs.blitter.com/RLabs/xs
				
				
				
			Fixed tun reuse hang/error after closure
Signed-off-by: Russ Magee <rmagee@gmail.com>
This commit is contained in:
		
							parent
							
								
									c4c2e24af1
								
							
						
					
					
						commit
						c327b2ec72
					
				|  | @ -157,6 +157,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { | |||
| 												close((*hc.tuns)[rport].Data) | ||||
| 												(*hc.tuns)[rport].Data = nil | ||||
| 											} | ||||
| 											delete((*hc.tuns), rport) | ||||
| 											break | ||||
| 										} else if strings.Contains(e.Error(), "i/o timeout") { | ||||
| 											if (*hc.tuns)[rport].Died { | ||||
|  | @ -165,6 +166,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { | |||
| 													close((*hc.tuns)[rport].Data) | ||||
| 													(*hc.tuns)[rport].Data = nil | ||||
| 												} | ||||
| 												delete((*hc.tuns), rport) | ||||
| 												break | ||||
| 											} | ||||
| 										} else { | ||||
|  | @ -177,6 +179,7 @@ func (hc *Conn) StartClientTunnel(lport, rport uint16) { | |||
| 												close((*hc.tuns)[rport].Data) | ||||
| 												(*hc.tuns)[rport].Data = nil | ||||
| 											} | ||||
| 											delete((*hc.tuns), rport) | ||||
| 											break | ||||
| 										} | ||||
| 									} | ||||
|  | @ -253,6 +256,10 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { | |||
| 			defer wg.Done() | ||||
| 			for { | ||||
| 				time.Sleep(100 * time.Millisecond) | ||||
| 				if (*hc.tuns)[rport] == nil { | ||||
| 					logger.LogDebug("[ServerTun] worker A: Client endpoint removed.") | ||||
| 					break | ||||
| 				} | ||||
| 				(*hc.tuns)[rport].KeepAlive += 1 | ||||
| 				if (*hc.tuns)[rport].KeepAlive > 25 { | ||||
| 					(*hc.tuns)[rport].Died = true | ||||
|  | @ -320,6 +327,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { | |||
| 										close((*hc.tuns)[rport].Data) | ||||
| 										(*hc.tuns)[rport].Data = nil | ||||
| 									} | ||||
| 									delete((*hc.tuns), rport) | ||||
| 									break | ||||
| 								} else if strings.Contains(e.Error(), "i/o timeout") { | ||||
| 									if (*hc.tuns)[rport].Died { | ||||
|  | @ -328,6 +336,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { | |||
| 											close((*hc.tuns)[rport].Data) | ||||
| 											(*hc.tuns)[rport].Data = nil | ||||
| 										} | ||||
| 										delete((*hc.tuns), rport) | ||||
| 										break | ||||
| 									} | ||||
| 								} else { | ||||
|  | @ -340,6 +349,7 @@ func (hc *Conn) StartServerTunnel(lport, rport uint16) { | |||
| 										close((*hc.tuns)[rport].Data) | ||||
| 										(*hc.tuns)[rport].Data = nil | ||||
| 									} | ||||
| 									delete((*hc.tuns), rport) | ||||
| 									break | ||||
| 								} | ||||
| 							} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue