Merge pull request #3130

5ae617d5 simplewallet: single out 0 amount destinations as dummy ones (moneromooo-monero)
c1d19f3c wallet2: fix sweep_all sending an atomic unit (moneromooo-monero)
This commit is contained in:
Riccardo Spagni 2018-01-25 16:57:03 -08:00
commit 09d19c9139
No known key found for this signature in database
GPG key ID: 55432DF31CCD4FCD
2 changed files with 16 additions and 4 deletions

View file

@ -4677,12 +4677,24 @@ bool simple_wallet::accept_loaded_tx(const std::function<size_t()> get_num_txes,
payment_id_string = "no payment ID"; payment_id_string = "no payment ID";
std::string dest_string; std::string dest_string;
size_t n_dummy_outputs = 0;
for (auto i = dests.begin(); i != dests.end(); ) for (auto i = dests.begin(); i != dests.end(); )
{ {
dest_string += (boost::format(tr("sending %s to %s")) % print_money(i->second.second) % i->second.first).str(); if (i->second.second > 0)
{
if (!dest_string.empty())
dest_string += ", ";
dest_string += (boost::format(tr("sending %s to %s")) % print_money(i->second.second) % i->second.first).str();
}
else
++n_dummy_outputs;
++i; ++i;
if (i != dests.end()) }
if (n_dummy_outputs > 0)
{
if (!dest_string.empty())
dest_string += ", "; dest_string += ", ";
dest_string += std::to_string(n_dummy_outputs) + tr(" dummy output(s)");
} }
if (dest_string.empty()) if (dest_string.empty())
dest_string = tr("with no destinations"); dest_string = tr("with no destinations");

View file

@ -7126,7 +7126,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_from(const crypton
THROW_WALLET_EXCEPTION_IF(needed_fee > available_for_fee, error::wallet_internal_error, "Transaction cannot pay for itself"); THROW_WALLET_EXCEPTION_IF(needed_fee > available_for_fee, error::wallet_internal_error, "Transaction cannot pay for itself");
while (needed_fee > test_ptx.fee) { do {
LOG_PRINT_L2("We made a tx, adjusting fee and saving it"); LOG_PRINT_L2("We made a tx, adjusting fee and saving it");
tx.dsts[0].amount = available_for_fee - needed_fee; tx.dsts[0].amount = available_for_fee - needed_fee;
if (use_rct) if (use_rct)
@ -7139,7 +7139,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_from(const crypton
needed_fee = calculate_fee(fee_per_kb, txBlob, fee_multiplier); needed_fee = calculate_fee(fee_per_kb, txBlob, fee_multiplier);
LOG_PRINT_L2("Made an attempt at a final " << get_size_string(txBlob) << " tx, with " << print_money(test_ptx.fee) << LOG_PRINT_L2("Made an attempt at a final " << get_size_string(txBlob) << " tx, with " << print_money(test_ptx.fee) <<
" fee and " << print_money(test_ptx.change_dts.amount) << " change"); " fee and " << print_money(test_ptx.change_dts.amount) << " change");
} } while (needed_fee > test_ptx.fee);
LOG_PRINT_L2("Made a final " << get_size_string(txBlob) << " tx, with " << print_money(test_ptx.fee) << LOG_PRINT_L2("Made a final " << get_size_string(txBlob) << " tx, with " << print_money(test_ptx.fee) <<
" fee and " << print_money(test_ptx.change_dts.amount) << " change"); " fee and " << print_money(test_ptx.change_dts.amount) << " change");