diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2011-07-05 17:42:44 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2011-07-05 17:42:44 +0200 |
commit | e9f61c8787af99c49678ba4bc182b24b8fdba0c4 (patch) | |
tree | d6ba403f7589fac5fa685998891f74b9bed19295 | |
parent | 9390431ce49893cbdf23846edb4bdf72b3d4e830 (diff) |
Fix synchronization of default key
-rw-r--r-- | src/ui.cpp | 2 | ||||
-rw-r--r-- | src/wallet.cpp | 24 | ||||
-rw-r--r-- | src/wallet.h | 1 |
3 files changed, 16 insertions, 11 deletions
diff --git a/src/ui.cpp b/src/ui.cpp index 2cbcfd5bd8..9b84fb9e6b 100644 --- a/src/ui.cpp +++ b/src/ui.cpp @@ -240,7 +240,7 @@ void SetDefaultReceivingAddress(const string& strAddress) return; if (!mapPubKeys.count(hash160)) return; - CWalletDB(pwalletMain->strWalletFile).WriteDefaultKey(mapPubKeys[hash160]); + pwalletMain->SetDefaultKey(mapPubKeys[hash160]); pframeMain->m_textCtrlAddress->SetValue(strAddress); } } diff --git a/src/wallet.cpp b/src/wallet.cpp index e54bbb3f45..6ef75ef27f 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -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(); } + diff --git a/src/wallet.h b/src/wallet.h index bf7d8cc51f..7d9db97267 100644 --- a/src/wallet.h +++ b/src/wallet.h @@ -176,6 +176,7 @@ public: bool GetTransaction(const uint256 &hashTx, CWalletTx& wtx); + bool SetDefaultKey(const std::vector<unsigned char> &vchPubKey); }; |