accounts/external: fill account-cache if that hasn't already been done, fixes #20995

This commit is contained in:
Martin Holst Swende 2020-04-28 14:39:26 +02:00
parent 7f95a85fd4
commit 2174e8d3de
No known key found for this signature in database
GPG key ID: 683B438C05A5DDF0

View file

@ -131,6 +131,12 @@ func (api *ExternalSigner) Accounts() []accounts.Account {
func (api *ExternalSigner) Contains(account accounts.Account) bool {
api.cacheMu.RLock()
defer api.cacheMu.RUnlock()
if api.cache == nil {
// If we haven't already fetched the accounts, it's time to do so now
api.cacheMu.RUnlock()
api.Accounts()
api.cacheMu.RLock()
}
for _, a := range api.cache {
if a.Address == account.Address && (account.URL == (accounts.URL{}) || account.URL == api.URL()) {
return true