From ff5ba7cca420705da85116cbaf6e735ec38a6152 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Thu, 29 Sep 2022 15:53:16 +0200 Subject: [PATCH] rbf: fix issues with bump_frr_through_decreasing_change - break from loop if target is reached - recompute delta if there is no next iteration. --- electrum/wallet.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/electrum/wallet.py b/electrum/wallet.py index b1505d010..949181008 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -1948,6 +1948,8 @@ class Abstract_Wallet(ABC, Logger, EventListener): for o in s: target_fee = int(math.ceil(tx.estimated_size() * new_fee_rate)) delta = target_fee - tx.get_fee() + if delta <= 0: + break i = outputs.index(o) if o.value - delta >= self.dust_threshold(): new_output_value = o.value - delta @@ -1959,6 +1961,11 @@ class Abstract_Wallet(ABC, Logger, EventListener): del outputs[i] # note: we mutated the outputs of tx, which will affect # tx.estimated_size() in the next iteration + else: + # recompute delta if there was no next iteration + target_fee = int(math.ceil(tx.estimated_size() * new_fee_rate)) + delta = target_fee - tx.get_fee() + if delta > 0: raise CannotBumpFee(_('Could not find suitable outputs'))