@@ -1895,34 +1895,41 @@ void CCoinJoinClientManager::GetJsonInfo(UniValue& obj) const
1895
1895
}
1896
1896
1897
1897
void CoinJoinWalletManager::Add (CWallet& wallet) {
1898
- m_wallet_manager_map.try_emplace (
1899
- wallet.GetName (),
1900
- std::make_unique<CCoinJoinClientManager>(wallet, *this , m_dmnman, m_mn_metaman, m_mn_sync, m_queueman, m_is_masternode)
1901
- );
1898
+ {
1899
+ LOCK (cs_wallet_manager_map);
1900
+ m_wallet_manager_map.try_emplace (
1901
+ wallet.GetName (),
1902
+ std::make_unique<CCoinJoinClientManager>(wallet, *this , m_dmnman, m_mn_metaman, m_mn_sync,
1903
+ m_queueman, m_is_masternode)
1904
+ );
1905
+ }
1902
1906
g_wallet_init_interface.InitCoinJoinSettings (*this );
1903
1907
}
1904
1908
1905
1909
void CoinJoinWalletManager::DoMaintenance () {
1906
- for (auto & [wallet_str, walletman] : m_wallet_manager_map ) {
1910
+ for (auto & [wallet_str, walletman] : raw () ) {
1907
1911
walletman->DoMaintenance (m_chainstate, m_connman, m_mempool);
1908
1912
}
1909
1913
}
1910
1914
1911
1915
void CoinJoinWalletManager::Remove (const std::string& name) {
1912
- m_wallet_manager_map.erase (name);
1916
+ {
1917
+ LOCK (cs_wallet_manager_map);
1918
+ m_wallet_manager_map.erase (name);
1919
+ }
1913
1920
g_wallet_init_interface.InitCoinJoinSettings (*this );
1914
1921
}
1915
1922
1916
1923
void CoinJoinWalletManager::Flush (const std::string& name)
1917
1924
{
1918
- auto clientman = Get (name);
1919
- assert (clientman != nullptr );
1925
+ auto clientman = Assert (Get (name));
1920
1926
clientman->ResetPool ();
1921
1927
clientman->StopMixing ();
1922
1928
}
1923
1929
1924
1930
CCoinJoinClientManager* CoinJoinWalletManager::Get (const std::string& name) const
1925
1931
{
1932
+ LOCK (cs_wallet_manager_map);
1926
1933
auto it = m_wallet_manager_map.find (name);
1927
1934
return (it != m_wallet_manager_map.end ()) ? it->second .get () : nullptr ;
1928
1935
}
0 commit comments