Browse Source

Add separate lock for SpendingKey key store operations

pull/145/head
Jack Grigg 8 years ago
parent
commit
0d7386916d
  1. 2
      src/keystore.cpp
  2. 7
      src/keystore.h

2
src/keystore.cpp

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

7
src/keystore.h

@ -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())
{

Loading…
Cancel
Save