diff --git a/main/main.go b/main/main.go index 574aa1b..e4d456b 100644 --- a/main/main.go +++ b/main/main.go @@ -81,6 +81,7 @@ func main() { defer node.Shutdown() - log.Debug("Dispatching node handlers") - node.Dispatch() + log.Debug("dispatching node handlers") + err = node.Dispatch() + log.Debug("dispatch returned with: %s", err) } diff --git a/network/network.go b/network/network.go index 5b7f419..50471eb 100644 --- a/network/network.go +++ b/network/network.go @@ -485,7 +485,15 @@ func (n *network) Dispatch() error { for { conn, err := n.listener.Accept() if err != nil { - return err + n.stateLock.Lock() + closed := n.closed + n.stateLock.Unlock() + + if closed { + return err + } + n.log.Debug("error during server accept: %s", err) + continue } go n.upgrade(&peer{ net: n, diff --git a/node/node.go b/node/node.go index 1408fec..0922b24 100644 --- a/node/node.go +++ b/node/node.go @@ -195,7 +195,7 @@ func (i *insecureValidatorManager) Disconnected(vdrID ids.ShortID) bool { // Dispatch starts the node's servers. // Returns when the node exits. -func (n *Node) Dispatch() { +func (n *Node) Dispatch() error { // Add bootstrap nodes to the peer network for _, peer := range n.Config.BootstrapPeers { if !peer.IP.Equal(n.Config.StakingIP) { @@ -205,7 +205,7 @@ func (n *Node) Dispatch() { } } - n.Net.Dispatch() + return n.Net.Dispatch() } /*