diff --git a/packages/gossip/manager.go b/packages/gossip/manager.go
index 7984a9e6d92a3fe5ae9be8d1c0b7141c477a1a01..2a44ddd4aa2621da86b5e6731aeb85ff3e0b86a7 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 8cfcee905f3636d6d3443c342b259191ccc8876e..8a2762afe5cd0f288512837aabdeecf81a074a0c 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
 	}