From fafd0111465ded6bfec5c0d91d7dd9c19ddac50b Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Fri, 18 Apr 2025 12:46:00 +0200 Subject: Close connection on end game --- pkg/p2p/network.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'pkg/p2p') diff --git a/pkg/p2p/network.go b/pkg/p2p/network.go index 2ebec43..7ff0746 100644 --- a/pkg/p2p/network.go +++ b/pkg/p2p/network.go @@ -51,6 +51,7 @@ type TCPNetwork struct { id NetworkID listener net.Listener connections map[NetworkID]net.Conn + isClosed bool } // Initiliaze a new TCP network @@ -129,6 +130,8 @@ func (n *TCPNetwork) startServer() error { return err } + n.isClosed = false + go n.listenLoop() n.Logger.Sugar().Infof("server started on %s\n", n.ListenAddr) @@ -141,6 +144,7 @@ func (n *TCPNetwork) listenLoop() error { for { conn, err := n.listener.Accept() if errors.Is(err, net.ErrClosed) { + n.isClosed = true n.Logger.Sugar().Errorf("connection is closed in such a way: %v\n", err) return err } @@ -218,7 +222,7 @@ func (n *TCPNetwork) retryConnect(remoteID NetworkID, addr string) { if err != nil { n.Logger.Sugar().Errorf("failed to connect to %s: %v. Retrying in %v...", remoteID, err, n.RetryDelay) time.Sleep(n.RetryDelay) - if n.RetryDelay < 30*time.Second { + if !n.isClosed && n.RetryDelay < 30*time.Second { n.RetryDelay *= 2 } else { n.Lock() -- cgit v1.2.3-18-g5258