From 33f6ef2fa28ebcc799529230bbb026a5f9385894 Mon Sep 17 00:00:00 2001 From: Czarek Nakamoto Date: Tue, 15 Oct 2024 18:00:47 +0200 Subject: [PATCH] coin control fix --- .../0019-fix-for-coin-control-patch.patch | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 patches/monero/0019-fix-for-coin-control-patch.patch 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 00000000..b7ff7f99 --- /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 +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::vectornettype(), 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::vectorunlocked_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 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 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() << "; "<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) +