From 8959382449d5895d52615a8e1cb5afc7e58c9e2f Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 11 Feb 2019 17:09:47 -0800 Subject: [PATCH] on manageServerConnection, always start a new one (fetch) and the replace existing if, and close --- protocol/connections/connectionsmanager.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/protocol/connections/connectionsmanager.go b/protocol/connections/connectionsmanager.go index 5c69473..0f299d6 100644 --- a/protocol/connections/connectionsmanager.go +++ b/protocol/connections/connectionsmanager.go @@ -45,13 +45,17 @@ func (m *Manager) ManagePeerConnection(host string, engine *Engine) *PeerPeerCon func (m *Manager) ManageServerConnection(host string, handler func(string, *protocol.GroupMessage)) { m.lock.Lock() - _, exists := m.serverConnections[host] - if !exists { - psc := NewPeerServerConnection(m.acn, host) - go psc.Run() - psc.GroupMessageHandler = handler - m.serverConnections[host] = psc + psc, exists := m.serverConnections[host] + + newPsc := NewPeerServerConnection(m.acn, host) + newPsc.GroupMessageHandler = handler + go newPsc.Run() + m.serverConnections[host] = newPsc + + if exists { + psc.Close() } + m.lock.Unlock() }