forked from cerc-io/plugeth
accounts: fix uses of sync.RWMutex
RWMutexes must be write-locked when writing in order to actually protect the writes.
This commit is contained in:
parent
afc530ea41
commit
d6a7332993
@ -111,9 +111,9 @@ func (am *AccountManager) SignLocked(a Account, keyAuth string, toSign []byte) (
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
am.mutex.RLock()
|
||||
am.mutex.Lock()
|
||||
am.unlockedKeys[string(a.Address)] = *key
|
||||
am.mutex.RUnlock()
|
||||
am.mutex.Unlock()
|
||||
go unlockLater(am, a.Address)
|
||||
signature, err = crypto.Sign(toSign, key.PrivateKey)
|
||||
return signature, err
|
||||
@ -147,8 +147,10 @@ func unlockLater(am *AccountManager, addr []byte) {
|
||||
select {
|
||||
case <-time.After(am.unlockTime):
|
||||
}
|
||||
am.mutex.RLock()
|
||||
am.mutex.Lock()
|
||||
// TODO: how do we know the key is actually gone from memory?
|
||||
delete(am.unlockedKeys, string(addr))
|
||||
am.mutex.RUnlock()
|
||||
am.mutex.Unlock()
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user