URI: 
       timprove bump_fee (fix #1985) - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 86c36550809fa330b21edf30a9b65816890a7c5e
   DIR parent 3062a62cf99ee907d2239cde3af7ae852463a14f
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Fri, 21 Oct 2016 12:59:55 +0200
       
       improve bump_fee (fix #1985)
       
       Diffstat:
         M lib/wallet.py                       |      26 ++++++++++++++++++--------
       
       1 file changed, 18 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1015,16 +1015,26 @@ class Abstract_Wallet(PrintError):
                for txin in inputs:
                    txin['signatures'] = [None] * len(txin['signatures'])
                    self.add_input_info(txin)
       -        for i, o in enumerate(outputs):
       +        # use own outputs
       +        s = filter(lambda x: self.is_mine(x[1]), outputs)
       +        # ... unless there is none
       +        if not s:
       +            s = outputs
       +        # prioritize low value outputs, to get rid of dust
       +        s = sorted(s, key=lambda x: x[2])
       +        for o in s:
       +            i = outputs.index(o)
                    otype, address, value = o
       -            if self.is_mine(address) and value >= delta:
       -                if value - delta >= self.dust_threshold():
       -                    outputs[i] = otype, address, value - delta
       -                else:
       -                    del outputs[i]
       +            if value - delta >= self.dust_threshold():
       +                outputs[i] = otype, address, value - delta
                        break
       -        else:
       -            raise BaseException(_("Cannot bump fee: could not find a change output"))
       +            else:
       +                del outputs[i]
       +                delta -= value
       +                if delta > 0:
       +                    continue
       +        if delta > 0:
       +            raise BaseException(_('Cannot bump fee: cound not find suitable outputs'))
                return Transaction.from_io(inputs, outputs)
        
            def add_input_info(self, txin):