Browse Source

prevent double close in tcp hub

Darien Raymond 8 years ago
parent
commit
52ed93408b
1 changed files with 5 additions and 0 deletions
  1. 5 0
      transport/internet/tcp_hub.go

+ 5 - 0
transport/internet/tcp_hub.go

@@ -63,11 +63,16 @@ func ListenTCP(address v2net.Address, port v2net.Port, callback ConnectionHandle
 }
 }
 
 
 func (v *TCPHub) Close() {
 func (v *TCPHub) Close() {
+	defer func() {
+		recover()
+	}()
+
 	select {
 	select {
 	case <-v.closed:
 	case <-v.closed:
 		return
 		return
 	default:
 	default:
 		v.listener.Close()
 		v.listener.Close()
+		close(v.closed)
 	}
 	}
 }
 }