From c6584b30dc8961aedf3325ffa92c1f20f44e1937 Mon Sep 17 00:00:00 2001 From: moogacs Date: Wed, 3 Apr 2024 15:59:24 +0200 Subject: [PATCH] fix: serialize NetworkTransport data race on ServerAddr() --- net_transport.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net_transport.go b/net_transport.go index bc34285e..7741e4aa 100644 --- a/net_transport.go +++ b/net_transport.go @@ -91,6 +91,7 @@ type NetworkTransport struct { maxPool int maxInFlight int + serverAddressLock sync.RWMutex serverAddressProvider ServerAddressProvider shutdown bool @@ -384,6 +385,8 @@ func (n *NetworkTransport) getConnFromAddressProvider(id ServerID, target Server } func (n *NetworkTransport) getProviderAddressOrFallback(id ServerID, target ServerAddress) ServerAddress { + n.serverAddressLock.RLock() + defer n.serverAddressLock.RUnlock() if n.serverAddressProvider != nil { serverAddressOverride, err := n.serverAddressProvider.ServerAddr(id) if err != nil {