diff --git a/routingtable/client_manager.go b/routingtable/client_manager.go index ee0275c3f2358ae96b4e297b17b540e29139bf90..20d848b2c090a4c311cb4a81fc8c1c4697cf5891 100644 --- a/routingtable/client_manager.go +++ b/routingtable/client_manager.go @@ -63,6 +63,8 @@ func (c *ClientManager) RegisterWithOptions(client RouteTableClient, opt ClientO // Unregister unregisters a client func (c *ClientManager) Unregister(client RouteTableClient) { + c.mu.Lock() + defer c.mu.Unlock() if _, ok := c.clients[client]; !ok { return } @@ -71,6 +73,8 @@ func (c *ClientManager) Unregister(client RouteTableClient) { // Clients returns a list of registered clients func (c *ClientManager) Clients() []RouteTableClient { + c.mu.RLock() + defer c.mu.RUnlock() ret := make([]RouteTableClient, 0) for rtc := range c.clients { ret = append(ret, rtc)