diff options
| author | Jeff Garzik <[email protected]> | 2011-07-02 16:46:07 -0400 |
|---|---|---|
| committer | Jeff Garzik <[email protected]> | 2011-07-02 16:46:07 -0400 |
| commit | a76899624ab4987dab7ca81d5ed22af140482d42 (patch) | |
| tree | 6a36c5573151f4a6e5bba7c39e4e05380ded8a02 /src/rpc.cpp | |
| parent | Merge pull request #374 from TheBlueMatt/neterror (diff) | |
| parent | Fix AddressBook syncrhonization between a CWallet and CWalletDB (diff) | |
| download | discoin-a76899624ab4987dab7ca81d5ed22af140482d42.tar.xz discoin-a76899624ab4987dab7ca81d5ed22af140482d42.zip | |
Merge branch 'tmp2' into tmp3
Diffstat (limited to 'src/rpc.cpp')
| -rw-r--r-- | src/rpc.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/rpc.cpp b/src/rpc.cpp index 780209920..6f951b743 100644 --- a/src/rpc.cpp +++ b/src/rpc.cpp @@ -332,12 +332,15 @@ Value getnewaddress(const Array& params, bool fHelp) // Generate a new key that is added to wallet string strAddress = PubKeyToAddress(pwalletMain->GetKeyFromKeyPool()); - pwalletMain->SetAddressBookName(strAddress, strAccount); + // This could be done in the same main CS as GetKeyFromKeyPool. + CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook) + pwalletMain->SetAddressBookName(strAddress, strAccount); + return strAddress; } -// requires cs_main, cs_mapWallet locks +// requires cs_main, cs_mapWallet, cs_mapAddressBook locks string GetAccountAddress(string strAccount, bool bForceNew=false) { string strAddress; @@ -393,6 +396,7 @@ Value getaccountaddress(const Array& params, bool fHelp) CRITICAL_BLOCK(cs_main) CRITICAL_BLOCK(pwalletMain->cs_mapWallet) + CRITICAL_BLOCK(pwalletMain->cs_mapAddressBook) { ret = GetAccountAddress(strAccount); } @@ -431,9 +435,10 @@ Value setaccount(const Array& params, bool fHelp) if (strAddress == GetAccountAddress(strOldAccount)) GetAccountAddress(strOldAccount, true); } + + pwalletMain->SetAddressBookName(strAddress, strAccount); } - pwalletMain->SetAddressBookName(strAddress, strAccount); return Value::null; } |