diff options
author | Santo Cariotti <santo@dcariotti.me> | 2025-04-18 12:46:00 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2025-04-18 12:46:00 +0200 |
commit | fafd0111465ded6bfec5c0d91d7dd9c19ddac50b (patch) | |
tree | 17908eae0e0d3292798b7d98777ff8fb22722cfe /pkg/p2p | |
parent | 0f21452248783d627ec1a3b4e8a3f8f0d9a69a10 (diff) |
Close connection on end game
Diffstat (limited to 'pkg/p2p')
-rw-r--r-- | pkg/p2p/network.go | 6 |
1 files changed, 5 insertions, 1 deletions
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() |