diff --git a/pool/tree/pool.go b/pool/tree/pool.go index dda74c1..dd5d826 100644 --- a/pool/tree/pool.go +++ b/pool/tree/pool.go @@ -1081,20 +1081,15 @@ func (p *Pool) deleteClientFromMap(hash uint64) { } func (p *Pool) getNewTreeClient(ctx context.Context, node netmap.NodeInfo) (*treeClient, error) { - var ( - treeCl *treeClient - err error - ) - - node.IterateNetworkEndpoints(func(endpoint string) bool { + for endpoint := range node.NetworkEndpoints() { var addr network.Address - if err = addr.FromString(endpoint); err != nil { + if err := addr.FromString(endpoint); err != nil { p.log(zap.WarnLevel, "can't parse endpoint", zap.String("endpoint", endpoint), zap.Error(err)) - return false + continue } newTreeCl := newTreeClient(addr.URIAddr(), p.dialOptions, p.nodeDialTimeout, p.streamTimeout) - if err = newTreeCl.dial(ctx); err != nil { + if err := newTreeCl.dial(ctx); err != nil { p.log(zap.WarnLevel, "failed to dial tree client", zap.Error(err)) // We have to close connection here after failed `dial()`. @@ -1106,18 +1101,13 @@ func (p *Pool) getNewTreeClient(ctx context.Context, node netmap.NodeInfo) (*tre p.log(zap.WarnLevel, "failed to close recently dialed tree client", zap.Error(err)) } - return false + continue } - treeCl = newTreeCl - return true - }) - - if treeCl == nil { - return nil, fmt.Errorf("tree client wasn't initialized") + return newTreeCl, nil } - return treeCl, nil + return nil, fmt.Errorf("tree client wasn't initialized") } func shouldTryAgain(err error) bool {