From aed76f6b5a5f65fb78313cf6289134bde08c189f Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 13 Jul 2021 14:58:26 +0300 Subject: [PATCH] [#694] pkg/network: Use single function to get or create client instance Signed-off-by: Alex Vanin --- pkg/network/cache/multi.go | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/pkg/network/cache/multi.go b/pkg/network/cache/multi.go index d17e60ef0..c3d9a94ec 100644 --- a/pkg/network/cache/multi.go +++ b/pkg/network/cache/multi.go @@ -61,18 +61,9 @@ func (x *multiClient) iterateClients(f func(client.Client) error) error { var firstErr error x.addr.IterateAddresses(func(addr network.Address) bool { - x.mtx.Lock() - - strAddr := addr.String() - var err error - c, cached := x.clients[strAddr] - if !cached { - c = x.createForAddress(addr) - } - - x.mtx.Unlock() + c := x.client(addr) err = f(c) @@ -322,6 +313,10 @@ func (x *multiClient) Close() error { } func (x *multiClient) RawForAddress(addr network.Address) *rawclient.Client { + return x.client(addr).Raw() +} + +func (x *multiClient) client(addr network.Address) client.Client { x.mtx.Lock() strAddr := addr.String() @@ -333,5 +328,5 @@ func (x *multiClient) RawForAddress(addr network.Address) *rawclient.Client { x.mtx.Unlock() - return c.Raw() + return c }