From a57fe8cf1e935e64fad38223efa0f2da305fe4c7 Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 14 Jun 2018 17:13:05 -0700 Subject: [PATCH] Fix multiple calls to disconnect --- server/server.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/server/server.go b/server/server.go index ee3b39c..eb719a7 100644 --- a/server/server.go +++ b/server/server.go @@ -197,24 +197,25 @@ func (n *Neighbor) Connect() error { func (n *Neighbor) Disconnect() { log.Infof("%v: Disconnected", n.String()) + wasConnected := n.Connected n.Connected = false n.State.OpenReceived = false n.tcpconn.Close() n.UpdateState(STATE_IDLE) - if n.HandlerEvent != nil { + if n.HandlerEvent != nil && wasConnected == true { n.HandlerEvent.DisconnectedNeighbor(n) } if n.RemoveOnDisconnect && n.s != nil && n.s.Manager != nil { log.Infof("%v: Removing from manager", n.String()) select { - case n.qLife <- true: - default: + case n.qLife <- true: + default: } select { - case n.qSender <- true: - default: + case n.qSender <- true: + default: } n.s.Manager.RemoveNeighbor(n)