fix data race in tcp server

pull/642/merge
Darien Raymond 2017-10-20 23:36:14 +02:00
parent 85a544d671
commit 1c29d1535c
1 changed files with 4 additions and 7 deletions

View File

@ -12,7 +12,6 @@ type Server struct {
MsgProcessor func(msg []byte) []byte MsgProcessor func(msg []byte) []byte
SendFirst []byte SendFirst []byte
Listen net.Address Listen net.Address
accepting bool
listener *net.TCPListener listener *net.TCPListener
} }
@ -37,12 +36,11 @@ func (server *Server) Start() (net.Destination, error) {
} }
func (server *Server) acceptConnections(listener *net.TCPListener) { func (server *Server) acceptConnections(listener *net.TCPListener) {
server.accepting = true for {
for server.accepting {
conn, err := listener.Accept() conn, err := listener.Accept()
if err != nil { if err != nil {
fmt.Printf("Failed accept TCP connection: %v\n", err) fmt.Printf("Failed accept TCP connection: %v\n", err)
continue return
} }
go server.handleConnection(conn) go server.handleConnection(conn)
@ -71,7 +69,6 @@ func (server *Server) handleConnection(conn net.Conn) {
conn.Close() conn.Close()
} }
func (v *Server) Close() { func (server *Server) Close() {
v.accepting = false server.listener.Close()
v.listener.Close()
} }