From a707057ae22a34866a0ab7c048f78db1fd6b5913 Mon Sep 17 00:00:00 2001
From: Wolfgang Welz <welzwo@gmail.com>
Date: Tue, 4 Feb 2020 10:35:12 +0000
Subject: [PATCH] Fix: Write to closed neigbhor (#229)

* fix close order

* return closed error

* fix tests

* do not close send queue explicitly
---
 packages/gossip/neighbor.go      |  3 +--
 packages/gossip/neighbor_test.go | 13 -------------
 2 files changed, 1 insertion(+), 15 deletions(-)

diff --git a/packages/gossip/neighbor.go b/packages/gossip/neighbor.go
index 6674275b..8cfcee90 100644
--- a/packages/gossip/neighbor.go
+++ b/packages/gossip/neighbor.go
@@ -84,7 +84,6 @@ func (n *Neighbor) IsOutbound() bool {
 func (n *Neighbor) disconnect() (err error) {
 	n.disconnectOnce.Do(func() {
 		close(n.closing)
-		close(n.queue)
 		err = n.BufferedConnection.Close()
 	})
 	return
@@ -140,7 +139,7 @@ func (n *Neighbor) readLoop() {
 func (n *Neighbor) Write(b []byte) (int, error) {
 	l := len(b)
 	if l > maxPacketSize {
-		n.log.Errorw("message too large", "len", l, "max", maxPacketSize)
+		n.log.Panicw("message too large", "len", l, "max", maxPacketSize)
 	}
 
 	// add to queue
diff --git a/packages/gossip/neighbor_test.go b/packages/gossip/neighbor_test.go
index 72a0f895..fd1e0fc7 100644
--- a/packages/gossip/neighbor_test.go
+++ b/packages/gossip/neighbor_test.go
@@ -35,19 +35,6 @@ func TestNeighborCloseTwice(t *testing.T) {
 	require.NoError(t, n.Close())
 }
 
-func TestNeighborWriteToClosed(t *testing.T) {
-	a, _, teardown := newPipe()
-	defer teardown()
-
-	n := newTestNeighbor("A", a)
-	n.Listen()
-	require.NoError(t, n.Close())
-
-	assert.Panics(t, func() {
-		_, _ = n.Write(testData)
-	})
-}
-
 func TestNeighborWrite(t *testing.T) {
 	a, b, teardown := newPipe()
 	defer teardown()
-- 
GitLab