Add separate lock for SpendingKey key store operations

This commit is contained in:
Jack Grigg 2016-08-16 22:17:33 +12:00
parent b5c06c83b0
commit 0d7386916d
2 changed files with 5 additions and 4 deletions

View File

@ -86,7 +86,7 @@ bool CBasicKeyStore::HaveWatchOnly() const
bool CBasicKeyStore::AddSpendingKey(const libzcash::SpendingKey &sk)
{
LOCK(cs_KeyStore);
LOCK(cs_SpendingKeyStore);
mapSpendingKeys[sk.address()] = sk;
return true;
}

View File

@ -21,6 +21,7 @@ class CKeyStore
{
protected:
mutable CCriticalSection cs_KeyStore;
mutable CCriticalSection cs_SpendingKeyStore;
public:
virtual ~CKeyStore() {}
@ -120,7 +121,7 @@ public:
{
bool result;
{
LOCK(cs_KeyStore);
LOCK(cs_SpendingKeyStore);
result = (mapSpendingKeys.count(address) > 0);
}
return result;
@ -128,7 +129,7 @@ public:
bool GetSpendingKey(const libzcash::PaymentAddress &address, libzcash::SpendingKey &skOut) const
{
{
LOCK(cs_KeyStore);
LOCK(cs_SpendingKeyStore);
SpendingKeyMap::const_iterator mi = mapSpendingKeys.find(address);
if (mi != mapSpendingKeys.end())
{
@ -142,7 +143,7 @@ public:
{
setAddress.clear();
{
LOCK(cs_KeyStore);
LOCK(cs_SpendingKeyStore);
SpendingKeyMap::const_iterator mi = mapSpendingKeys.begin();
while (mi != mapSpendingKeys.end())
{