From 148a7d23b139e33ecb35aceb70d4020bbe1dad2f Mon Sep 17 00:00:00 2001
From: Luca Moser <moser.luca@gmail.com>
Date: Tue, 4 Feb 2020 14:02:37 +0100
Subject: [PATCH] increases send queue and ignore sending if connection is
 closed (#232)

---
 packages/gossip/manager.go  | 2 +-
 packages/gossip/neighbor.go | 7 +++++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/packages/gossip/manager.go b/packages/gossip/manager.go
index 7984a9e6..2a44ddd4 100644
--- a/packages/gossip/manager.go
+++ b/packages/gossip/manager.go
@@ -174,7 +174,7 @@ func (m *Manager) send(b []byte, to ...peer.ID) {
 
 	for _, nbr := range neighbors {
 		if _, err := nbr.Write(b); err != nil {
-			m.log.Warnw("send error", "err", err)
+			m.log.Warnw("send error", "err", err, "neighbor", nbr.Peer.Address())
 		}
 	}
 }
diff --git a/packages/gossip/neighbor.go b/packages/gossip/neighbor.go
index 8cfcee90..8a2762af 100644
--- a/packages/gossip/neighbor.go
+++ b/packages/gossip/neighbor.go
@@ -19,7 +19,7 @@ var (
 )
 
 const (
-	neighborQueueSize = 1000
+	neighborQueueSize = 5000
 	maxNumReadErrors  = 10
 )
 
@@ -99,8 +99,9 @@ func (n *Neighbor) writeLoop() {
 				continue
 			}
 			if _, err := n.BufferedConnection.Write(msg); err != nil {
-				// ignore write errors
 				n.log.Warn("Write error", "err", err)
+				_ = n.BufferedConnection.Close()
+				return
 			}
 		case <-n.closing:
 			return
@@ -146,6 +147,8 @@ func (n *Neighbor) Write(b []byte) (int, error) {
 	select {
 	case n.queue <- b:
 		return l, nil
+	case <-n.closing:
+		return 0, nil
 	default:
 		return 0, ErrNeighborQueueFull
 	}
-- 
GitLab