wallet2_api: fixed deadlock while closing wallet
This commit is contained in:
parent
53e18cafdf
commit
cdb6c96f89
|
@ -169,7 +169,9 @@ WalletImpl::WalletImpl(bool testnet)
|
||||||
m_wallet->callback(m_wallet2Callback);
|
m_wallet->callback(m_wallet2Callback);
|
||||||
m_refreshThreadDone = false;
|
m_refreshThreadDone = false;
|
||||||
m_refreshEnabled = false;
|
m_refreshEnabled = false;
|
||||||
|
|
||||||
m_refreshIntervalSeconds = DEFAULT_REFRESH_INTERVAL_SECONDS;
|
m_refreshIntervalSeconds = DEFAULT_REFRESH_INTERVAL_SECONDS;
|
||||||
|
|
||||||
m_refreshThread = boost::thread([this] () {
|
m_refreshThread = boost::thread([this] () {
|
||||||
this->refreshThreadFunc();
|
this->refreshThreadFunc();
|
||||||
});
|
});
|
||||||
|
@ -272,14 +274,15 @@ bool WalletImpl::close()
|
||||||
{
|
{
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
LOG_PRINT_L3("closing wallet...");
|
||||||
try {
|
try {
|
||||||
// do not store wallet with invalid status
|
// do not store wallet with invalid status
|
||||||
if (status() == Status_Ok)
|
if (status() == Status_Ok)
|
||||||
m_wallet->store();
|
m_wallet->store();
|
||||||
// LOG_PRINT_L0("wallet::store done");
|
LOG_PRINT_L3("wallet::store done");
|
||||||
// LOG_PRINT_L0("Calling wallet::stop...");
|
LOG_PRINT_L3("Calling wallet::stop...");
|
||||||
m_wallet->stop();
|
m_wallet->stop();
|
||||||
// LOG_PRINT_L0("wallet::stop done");
|
LOG_PRINT_L3("wallet::stop done");
|
||||||
result = true;
|
result = true;
|
||||||
clearStatus();
|
clearStatus();
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
|
@ -680,6 +683,7 @@ void WalletImpl::stopRefresh()
|
||||||
if (!m_refreshThreadDone) {
|
if (!m_refreshThreadDone) {
|
||||||
m_refreshEnabled = false;
|
m_refreshEnabled = false;
|
||||||
m_refreshThreadDone = true;
|
m_refreshThreadDone = true;
|
||||||
|
m_refreshCV.notify_one();
|
||||||
m_refreshThread.join();
|
m_refreshThread.join();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue