p2p/server | add some go routines to wg

This commit is contained in:
ucwong 2020-04-01 15:11:53 +08:00
parent f0be151349
commit c786a726ff

View file

@ -562,7 +562,11 @@ func (srv *Server) setupDiscovery() error {
srv.log.Debug("UDP listener up", "addr", realaddr) srv.log.Debug("UDP listener up", "addr", realaddr)
if srv.NAT != nil { if srv.NAT != nil {
if !realaddr.IP.IsLoopback() { if !realaddr.IP.IsLoopback() {
go nat.Map(srv.NAT, srv.quit, "udp", realaddr.Port, realaddr.Port, "ethereum discovery") srv.loopWG.Add(1)
go func() {
defer srv.loopWG.Done()
nat.Map(srv.NAT, srv.quit, "udp", realaddr.Port, realaddr.Port, "ethereum discovery")
}()
} }
} }
srv.localnode.SetFallbackUDP(realaddr.Port) srv.localnode.SetFallbackUDP(realaddr.Port)
@ -666,8 +670,8 @@ func (srv *Server) setupListening() error {
if !tcp.IP.IsLoopback() && srv.NAT != nil { if !tcp.IP.IsLoopback() && srv.NAT != nil {
srv.loopWG.Add(1) srv.loopWG.Add(1)
go func() { go func() {
defer srv.loopWG.Done()
nat.Map(srv.NAT, srv.quit, "tcp", tcp.Port, tcp.Port, "ethereum p2p") nat.Map(srv.NAT, srv.quit, "tcp", tcp.Port, tcp.Port, "ethereum p2p")
srv.loopWG.Done()
}() }()
} }
} }
@ -881,7 +885,9 @@ func (srv *Server) listenLoop() {
fd = newMeteredConn(fd, true, addr) fd = newMeteredConn(fd, true, addr)
srv.log.Trace("Accepted connection", "addr", fd.RemoteAddr()) srv.log.Trace("Accepted connection", "addr", fd.RemoteAddr())
} }
srv.loopWG.Add(1)
go func() { go func() {
defer srv.loopWG.Done()
srv.SetupConn(fd, inboundConn, nil) srv.SetupConn(fd, inboundConn, nil)
slots <- struct{}{} slots <- struct{}{}
}() }()
@ -1015,12 +1021,14 @@ func (srv *Server) launchPeer(c *conn) *Peer {
// to the peer. // to the peer.
p.events = &srv.peerFeed p.events = &srv.peerFeed
} }
srv.loopWG.Add(1)
go srv.runPeer(p) go srv.runPeer(p)
return p return p
} }
// runPeer runs in its own goroutine for each peer. // runPeer runs in its own goroutine for each peer.
func (srv *Server) runPeer(p *Peer) { func (srv *Server) runPeer(p *Peer) {
defer srv.loopWG.Done()
if srv.newPeerHook != nil { if srv.newPeerHook != nil {
srv.newPeerHook(p) srv.newPeerHook(p)
} }