[#1212] morph: Fix NPE in multi client

Share multi cache between single clients.

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2022-03-03 16:34:08 +03:00 committed by Alex Vanin
parent cbc816d57d
commit 0e0a675f35
2 changed files with 8 additions and 5 deletions

View file

@ -92,12 +92,12 @@ func New(key *keys.PrivateKey, endpoint string, opts ...Option) (*Client, error)
endpoints := append(cfg.extraEndpoints, endpoint)
return &Client{
cache: initClientCache(),
multiClient: &multiClient{
cfg: *cfg,
account: wallet.NewAccountFromPrivateKey(key),
endpoints: endpoints,
clients: make(map[string]*Client, len(endpoints)),
cfg: *cfg,
account: wallet.NewAccountFromPrivateKey(key),
endpoints: endpoints,
clients: make(map[string]*Client, len(endpoints)),
sharedCache: initClientCache(),
},
}, nil
}

View file

@ -15,6 +15,8 @@ type multiClient struct {
sharedNotary *notary // notary config needed for single client construction
sharedCache cache
endpoints []string
clientsMtx sync.Mutex
clients map[string]*Client
@ -41,6 +43,7 @@ func (x *multiClient) createForAddress(addr string) (*Client, error) {
sCli.notary = x.sharedNotary
c := &Client{
cache: x.sharedCache,
singleClient: sCli,
}