浏览代码

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

Martin Holst Swende 5 年之前
父节点
当前提交
d2d3166f35
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      accounts/external/backend.go

+ 6 - 0
accounts/external/backend.go

@@ -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