simplewallet: lock idle scope in {im,ex}port_{key_images,outputs}
This ensures we can't get races
This commit is contained in:
parent
1cc7451130
commit
586ee64209
|
@ -6046,6 +6046,7 @@ bool simple_wallet::export_key_images(const std::vector<std::string> &args)
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
LOCK_IDLE_SCOPE();
|
||||||
if (!m_wallet->export_key_images(filename))
|
if (!m_wallet->export_key_images(filename))
|
||||||
{
|
{
|
||||||
fail_msg_writer() << tr("failed to save file ") << filename;
|
fail_msg_writer() << tr("failed to save file ") << filename;
|
||||||
|
@ -6078,6 +6079,7 @@ bool simple_wallet::import_key_images(const std::vector<std::string> &args)
|
||||||
}
|
}
|
||||||
std::string filename = args[0];
|
std::string filename = args[0];
|
||||||
|
|
||||||
|
LOCK_IDLE_SCOPE();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
uint64_t spent = 0, unspent = 0;
|
uint64_t spent = 0, unspent = 0;
|
||||||
|
@ -6109,6 +6111,7 @@ bool simple_wallet::export_outputs(const std::vector<std::string> &args)
|
||||||
if (m_wallet->ask_password() && !get_and_verify_password()) { return true; }
|
if (m_wallet->ask_password() && !get_and_verify_password()) { return true; }
|
||||||
std::string filename = args[0];
|
std::string filename = args[0];
|
||||||
|
|
||||||
|
LOCK_IDLE_SCOPE();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
std::vector<tools::wallet2::transfer_details> outs = m_wallet->export_outputs();
|
std::vector<tools::wallet2::transfer_details> outs = m_wallet->export_outputs();
|
||||||
|
@ -6207,6 +6210,7 @@ bool simple_wallet::import_outputs(const std::vector<std::string> &args)
|
||||||
boost::archive::binary_iarchive ar(iss);
|
boost::archive::binary_iarchive ar(iss);
|
||||||
ar >> outputs;
|
ar >> outputs;
|
||||||
}
|
}
|
||||||
|
LOCK_IDLE_SCOPE();
|
||||||
size_t n_outputs = m_wallet->import_outputs(outputs);
|
size_t n_outputs = m_wallet->import_outputs(outputs);
|
||||||
success_msg_writer() << boost::lexical_cast<std::string>(n_outputs) << " outputs imported";
|
success_msg_writer() << boost::lexical_cast<std::string>(n_outputs) << " outputs imported";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue