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