mirror of https://github.com/v2ray/v2ray-core
fix data race in tcp server
parent
85a544d671
commit
1c29d1535c
|
@ -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()
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue