diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/wallet/wallet2.cpp | 6 | ||||
| -rw-r--r-- | src/wallet/wallet2.h | 4 | ||||
| -rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 23 | ||||
| -rw-r--r-- | src/wallet/wallet_rpc_server_commands_defs.h | 2 |
4 files changed, 21 insertions, 14 deletions
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index af1f03d2c..00157cb3e 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -15398,7 +15398,7 @@ void wallet2::update_multisig_rescan_info(const std::vector<std::vector<rct::key m_key_images[td.m_key_image] = n; } //---------------------------------------------------------------------------------------------------- -size_t wallet2::import_multisig(std::vector<cryptonote::blobdata> blobs) +size_t wallet2::import_multisig(std::vector<cryptonote::blobdata> blobs, bool refresh_after_import) { CHECK_AND_ASSERT_THROW_MES(m_multisig, "Wallet is not multisig"); @@ -15523,8 +15523,8 @@ size_t wallet2::import_multisig(std::vector<cryptonote::blobdata> blobs) update_multisig_rescan_info(m_multisig_rescan_k, m_multisig_rescan_info, n); } - - refresh(false); + if (refresh_after_import) + refresh(false); return n_outputs; } diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index a765dc475..cedfecbeb 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -994,9 +994,11 @@ private: cryptonote::blobdata export_multisig(); /*! * Import a set of multisig info from multisig partners + * \param info Multisig info from other participants + * \param refresh_after_import Whether to refresh the wallet and rescan spent outputs after importing * \return the number of inputs which were imported */ - size_t import_multisig(std::vector<cryptonote::blobdata> info); + size_t import_multisig(std::vector<cryptonote::blobdata> info, bool refresh_after_import = true); /*! * \brief Rewrites to the wallet file for wallet upgrade (doesn't generate key, assumes it's already there) * \param wallet_name Name of wallet file (should exist) diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 531dc3197..8d4c80c93 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -4431,7 +4431,7 @@ namespace tools try { - res.n_outputs = m_wallet->import_multisig(info); + res.n_outputs = m_wallet->import_multisig(info, req.refresh_after_import); } catch (const std::exception &e) { @@ -4440,21 +4440,24 @@ namespace tools return false; } - if (m_wallet->is_trusted_daemon()) + if (req.refresh_after_import) { - try + if (m_wallet->is_trusted_daemon()) { - m_wallet->rescan_spent(); + try + { + m_wallet->rescan_spent(); + } + catch (const std::exception &e) + { + er.message = std::string("Success, but failed to update spent status after import multisig info: ") + e.what(); + } } - catch (const std::exception &e) + else { - er.message = std::string("Success, but failed to update spent status after import multisig info: ") + e.what(); + er.message = "Success, but cannot update spent status after import multisig info as daemon is untrusted"; } } - else - { - er.message = "Success, but cannot update spent status after import multisig info as daemon is untrusted"; - } return true; } diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h index bd3321ec0..26a1e2ab4 100644 --- a/src/wallet/wallet_rpc_server_commands_defs.h +++ b/src/wallet/wallet_rpc_server_commands_defs.h @@ -2454,9 +2454,11 @@ namespace wallet_rpc struct request_t { std::vector<std::string> info; + bool refresh_after_import; BEGIN_KV_SERIALIZE_MAP() KV_SERIALIZE(info) + KV_SERIALIZE_OPT(refresh_after_import, true) END_KV_SERIALIZE_MAP() }; typedef epee::misc_utils::struct_init<request_t> request; |
