summaryrefslogtreecommitdiff
path: root/pkg/p2p
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-04-18 12:46:00 +0200
committerSanto Cariotti <santo@dcariotti.me>2025-04-18 12:46:00 +0200
commitfafd0111465ded6bfec5c0d91d7dd9c19ddac50b (patch)
tree17908eae0e0d3292798b7d98777ff8fb22722cfe /pkg/p2p
parent0f21452248783d627ec1a3b4e8a3f8f0d9a69a10 (diff)
Close connection on end game
Diffstat (limited to 'pkg/p2p')
-rw-r--r--pkg/p2p/network.go6
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()