From 38afb8292641066fb9f434b4dbadc067cbdf7a2a Mon Sep 17 00:00:00 2001 From: Alex Vanin Date: Tue, 13 Jul 2021 14:02:24 +0300 Subject: [PATCH] [#694] pkg/network: Use client cache in raw client getter Every raw client getter invocation produced new connection, that lead to connection leak. Signed-off-by: Alex Vanin --- pkg/network/cache/multi.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/network/cache/multi.go b/pkg/network/cache/multi.go index 5d3fed460..d17e60ef0 100644 --- a/pkg/network/cache/multi.go +++ b/pkg/network/cache/multi.go @@ -324,9 +324,14 @@ func (x *multiClient) Close() error { func (x *multiClient) RawForAddress(addr network.Address) *rawclient.Client { x.mtx.Lock() - c := x.createForAddress(addr).Raw() + strAddr := addr.String() + + c, cached := x.clients[strAddr] + if !cached { + c = x.createForAddress(addr) + } x.mtx.Unlock() - return c + return c.Raw() }