mirror of
https://github.com/monero-project/monero.git
synced 2024-10-01 11:49:47 -04:00
wallet2: don't throw when spent amount is inconsistent
This commit is contained in:
parent
ed67e5c001
commit
0133b3481a
@ -1313,11 +1313,21 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote
|
|||||||
uint64_t amount = boost::get<cryptonote::txin_to_key>(in).amount;
|
uint64_t amount = boost::get<cryptonote::txin_to_key>(in).amount;
|
||||||
if (amount > 0)
|
if (amount > 0)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(amount != td.amount(), error::wallet_internal_error,
|
if(amount != td.amount())
|
||||||
std::string("Inconsistent amount in tx input: got ") + print_money(amount) +
|
{
|
||||||
std::string(", expected ") + print_money(td.amount()));
|
MERROR("Inconsistent amount in tx input: got " << print_money(amount) <<
|
||||||
|
", expected " << print_money(td.amount()));
|
||||||
|
// this means:
|
||||||
|
// 1) the same output pub key was used as destination multiple times,
|
||||||
|
// 2) the wallet set the highest amount among them to transfer_details::m_amount, and
|
||||||
|
// 3) the wallet somehow spent that output with an amount smaller than the above amount, causing inconsistency
|
||||||
|
td.m_amount = amount;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
amount = td.amount();
|
amount = td.amount();
|
||||||
|
}
|
||||||
tx_money_spent_in_ins += amount;
|
tx_money_spent_in_ins += amount;
|
||||||
if (subaddr_account && *subaddr_account != td.m_subaddr_index.major)
|
if (subaddr_account && *subaddr_account != td.m_subaddr_index.major)
|
||||||
LOG_ERROR("spent funds are from different subaddress accounts; count of incoming/outgoing payments will be incorrect");
|
LOG_ERROR("spent funds are from different subaddress accounts; count of incoming/outgoing payments will be incorrect");
|
||||||
|
Loading…
Reference in New Issue
Block a user