diff options
| author | sneurlax <sneurlax@gmail.com> | 2024-10-16 17:14:41 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-16 17:14:41 -0500 |
| commit | 6260fed0d483dad6d8af016e1b223c36c13dca5b (patch) | |
| tree | ff6accbbe075eef647b3666fce42ab8cf2874778 /patches/monero/0019-fix-for-coin-control-patch.patch | |
| parent | b556f50129d1a55c81cb5bcdf749f154137c9999 (diff) | |
| parent | 939040032f6e22529ccb6b5f54d9c48fc94db3d6 (diff) | |
Merge branch 'master' into rust
Diffstat (limited to 'patches/monero/0019-fix-for-coin-control-patch.patch')
| -rw-r--r-- | patches/monero/0019-fix-for-coin-control-patch.patch | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/patches/monero/0019-fix-for-coin-control-patch.patch b/patches/monero/0019-fix-for-coin-control-patch.patch new file mode 100644 index 0000000..b7ff7f9 --- /dev/null +++ b/patches/monero/0019-fix-for-coin-control-patch.patch @@ -0,0 +1,97 @@ +From 8f93306ed526e0e573b33fc7dd40abbba7e7a00a Mon Sep 17 00:00:00 2001 +From: Czarek Nakamoto <cyjan@mrcyjanek.net> +Date: Tue, 15 Oct 2024 18:00:05 +0200 +Subject: [PATCH] fix for coin control patch + +--- + src/wallet/api/coins.cpp | 1 + + src/wallet/api/wallet.cpp | 36 +++++++++++++++++++++++++++++++++++- + 2 files changed, 36 insertions(+), 1 deletion(-) + +diff --git a/src/wallet/api/coins.cpp b/src/wallet/api/coins.cpp +index 2321c638d..ef12141cf 100644 +--- a/src/wallet/api/coins.cpp ++++ b/src/wallet/api/coins.cpp +@@ -114,6 +114,7 @@ void CoinsImpl::setFrozen(int index) + { + try + { ++ LOG_ERROR("Freezing coin: " << index); + m_wallet->m_wallet->freeze(index); + refresh(); + } +diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp +index ec7d60ec0..db127dae4 100644 +--- a/src/wallet/api/wallet.cpp ++++ b/src/wallet/api/wallet.cpp +@@ -2116,6 +2116,7 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri + } + } + bool error = false; ++ uint64_t amountSum = 0; + for (size_t i = 0; i < dst_addr.size() && !error; i++) { + if(!cryptonote::get_account_address_from_str(info, m_wallet->nettype(), dst_addr[i])) { + // TODO: copy-paste 'if treating as an address fails, try as url' from simplewallet.cpp:1982 +@@ -2137,6 +2138,7 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri + de.original = dst_addr[i]; + de.addr = info.address; + de.amount = (*amount)[i]; ++ amountSum += (*amount)[i]; + de.is_subaddress = info.is_subaddress; + de.is_integrated = info.has_payment_id; + dsts.push_back(de); +@@ -2147,18 +2149,50 @@ PendingTransaction *WalletImpl::createTransactionMultDest(const std::vector<stri + } + } + } ++ // uint64_t maxAllowedSpend = m_wallet->unlocked_balance(subaddr_account, true); ++ // if (maxAllowedSpend < amountSum) { ++ // error = true; ++ // setStatusError(tr("Amount you are trying to spend is larger than unlocked amount")); ++ // break; ++ // } + std::vector<crypto::key_image> preferred_input_list; + if (!preferred_inputs.empty()) { ++ LOG_ERROR("empty"); ++ + for (const auto &public_key : preferred_inputs) { + crypto::key_image keyImage; + bool r = epee::string_tools::hex_to_pod(public_key, keyImage); +- if (!r) { ++ if (!r) { + error = true; + setStatusError(tr("failed to parse key image")); + break; + } ++ if (m_wallet->frozen(keyImage)) { ++ error = true; ++ setStatusError(tr("refusing to spend frozen coin")); ++ break; ++ } ++ + preferred_input_list.push_back(keyImage); + } ++ } else { ++ LOG_ERROR("not empty"); ++ ++ boost::shared_lock<boost::shared_mutex> transfers_lock(m_wallet->m_transfers_mutex); ++ for (size_t i = 0; i < m_wallet->get_num_transfer_details(); ++i) { ++ const tools::wallet2::transfer_details &td = m_wallet->get_transfer_details(i); ++ LOG_ERROR("COIN: " << i << ": " << td.amount() << "; "<<td.m_spent << ";" << td.m_frozen << ";" << m_wallet->frozen(td)); ++ if (td.m_spent) continue; ++ LOG_ERROR("is frozen"); ++ if (!td.m_frozen) { ++ LOG_ERROR("isn't:"); ++ LOG_ERROR("hash: " << td.m_key_image << "; " << td.amount()); ++ preferred_input_list.push_back(td.m_key_image); ++ } ++ } ++ } ++ for (const auto &de : preferred_input_list) { ++ LOG_ERROR("preferred input: " << de); + } + if (error) { + break; +-- +2.39.5 (Apple Git-154) + |
