Fix synchronization of default key

This commit is contained in:
Pieter Wuille
2011-07-05 17:42:44 +02:00
parent 9390431ce4
commit e9f61c8787
3 changed files with 16 additions and 11 deletions

View File

@@ -98,14 +98,7 @@ bool CWallet::AddToWallet(const CWalletTx& wtxIn)
BOOST_FOREACH(const CTxOut& txout, wtx.vout)
{
if (txout.scriptPubKey == scriptDefaultKey)
{
if (!fFileBacked)
continue;
CWalletDB walletdb(strWalletFile);
vchDefaultKey = GetKeyFromKeyPool();
walletdb.WriteDefaultKey(vchDefaultKey);
walletdb.WriteName(PubKeyToAddress(vchDefaultKey), "");
}
SetDefaultKey(GetKeyFromKeyPool());
}
// Notify UI
@@ -967,10 +960,9 @@ bool CWallet::LoadWallet(bool& fFirstRunRet)
// Create new default key
RandAddSeedPerfmon();
vchDefaultKey = GetKeyFromKeyPool();
SetDefaultKey(GetKeyFromKeyPool());
if (!SetAddressBookName(PubKeyToAddress(vchDefaultKey), ""))
return false;
CWalletDB(strWalletFile).WriteDefaultKey(vchDefaultKey);
}
CreateThread(ThreadFlushWalletDB, &strWalletFile);
@@ -1022,6 +1014,17 @@ bool CWallet::GetTransaction(const uint256 &hashTx, CWalletTx& wtx)
return false;
}
bool CWallet::SetDefaultKey(const std::vector<unsigned char> &vchPubKey)
{
if (fFileBacked)
{
if (!CWalletDB(strWalletFile).WriteDefaultKey(vchPubKey))
return false;
}
vchDefaultKey = vchPubKey;
return true;
}
bool GetWalletFile(CWallet* pwallet, string &strWalletFileOut)
{
if (!pwallet->fFileBacked)
@@ -1133,3 +1136,4 @@ void CReserveKey::ReturnKey()
nIndex = -1;
vchPubKey.clear();
}