Переглянути джерело

actually close tcp and udp servers

Darien Raymond 9 роки тому
батько
коміт
f19da2058a
2 змінених файлів з 7 додано та 1 видалено
  1. 4 1
      testing/servers/tcp/tcp.go
  2. 3 0
      testing/servers/udp/udp.go

+ 4 - 1
testing/servers/tcp/tcp.go

@@ -12,6 +12,7 @@ type Server struct {
 	Port         v2net.Port
 	MsgProcessor func(msg []byte) []byte
 	accepting    bool
+	listener *net.TCPListener
 }
 
 func (server *Server) Start() (v2net.Destination, error) {
@@ -23,6 +24,7 @@ func (server *Server) Start() (v2net.Destination, error) {
 	if err != nil {
 		return nil, err
 	}
+	server.listener = listener
 	go server.acceptConnections(listener)
 	localAddr := listener.Addr().(*net.TCPAddr)
 	return v2net.TCPDestination(v2net.IPAddress(localAddr.IP), v2net.Port(localAddr.Port)), nil
@@ -55,5 +57,6 @@ func (server *Server) handleConnection(conn net.Conn) {
 }
 
 func (this *Server) Close() {
-	this.accepting = true
+	this.accepting = false
+	this.listener.Close()
 }

+ 3 - 0
testing/servers/udp/udp.go

@@ -11,6 +11,7 @@ type Server struct {
 	Port         v2net.Port
 	MsgProcessor func(msg []byte) []byte
 	accepting    bool
+	conn *net.UDPConn
 }
 
 func (server *Server) Start() (v2net.Destination, error) {
@@ -22,6 +23,7 @@ func (server *Server) Start() (v2net.Destination, error) {
 	if err != nil {
 		return nil, err
 	}
+	server.conn = conn
 	go server.handleConnection(conn)
 	localAddr := conn.LocalAddr().(*net.UDPAddr)
 	return v2net.UDPDestination(v2net.IPAddress(localAddr.IP), v2net.Port(localAddr.Port)), nil
@@ -45,4 +47,5 @@ func (server *Server) handleConnection(conn *net.UDPConn) {
 
 func (server *Server) Close() {
 	server.accepting = false
+	server.conn.Close()
 }