From 281808b94c3498a334f895eca9584cacbe4bd025 Mon Sep 17 00:00:00 2001 From: Christoph Petrausch <christoph.petrausch@inovex.de> Date: Tue, 29 May 2018 12:14:19 +0200 Subject: [PATCH] Release lock after updating map. UpdateNewClients may call GetOptions or Clients() and thus cause a deadlock --- routingtable/client_manager.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/routingtable/client_manager.go b/routingtable/client_manager.go index 20d848b2..f29ae2dc 100644 --- a/routingtable/client_manager.go +++ b/routingtable/client_manager.go @@ -55,9 +55,8 @@ func (c *ClientManager) Register(client RouteTableClient) { // RegisterWithOptions registers a client with options for updates func (c *ClientManager) RegisterWithOptions(client RouteTableClient, opt ClientOptions) { c.mu.Lock() - defer c.mu.Unlock() - c.clients[client] = opt + c.mu.Unlock() c.master.UpdateNewClient(client) } -- GitLab