URI: 
       trevert 'keep invoice INFLIGHT', check HTLCs before payment attempt - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit f32d49b8cad25ff653a940e6c7fda1d86c88e17c
   DIR parent 38652cffb05233a8ea113a9891bf7496f7279562
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Sun, 28 Feb 2021 09:01:31 +0100
       
       revert 'keep invoice INFLIGHT', check HTLCs before payment attempt
       
       Diffstat:
         M electrum/lnworker.py                |      21 ++++++++-------------
       
       1 file changed, 8 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -1042,6 +1042,8 @@ class LNWallet(LNWorker):
                    raise PaymentFailure(_("This invoice has been paid already"))
                if status == PR_INFLIGHT:
                    raise PaymentFailure(_("A payment was already initiated for this invoice"))
       +        if payment_hash in self.get_payments(status='inflight'):
       +            raise PaymentFailure(_("A previous attempt to pay this invoice did not clear"))
                info = PaymentInfo(payment_hash, amount_to_pay, SENT, PR_UNPAID)
                self.save_payment_info(info)
                self.wallet.set_label(key, lnaddr.get_description())
       t@@ -1069,11 +1071,6 @@ class LNWallet(LNWorker):
                    self.logger.exception('')
                    success = False
                    reason = str(e)
       -        # keep invoice status INFLIGHT as long as HTLCs are inflight
       -        # maybe we could add an extra state for the waiting time.
       -        while payment_hash in self.get_payments(status='inflight'):
       -            self.logger.info('waiting for inflight HTLCs...')
       -            await self.sent_htlcs[payment_hash].get()
                if success:
                    self.set_invoice_status(key, PR_PAID)
                    util.trigger_callback('payment_succeeded', self.wallet, key)
       t@@ -1750,10 +1747,9 @@ class LNWallet(LNWorker):
                        amount_msat=amount_msat)
                    q.put_nowait(htlc_log)
                else:
       -            if payment_hash not in self.get_payments(status='inflight'):
       -                key = payment_hash.hex()
       -                self.set_invoice_status(key, PR_PAID)
       -                util.trigger_callback('payment_succeeded', self.wallet, key)
       +            key = payment_hash.hex()
       +            self.set_invoice_status(key, PR_PAID)
       +            util.trigger_callback('payment_succeeded', self.wallet, key)
        
            def htlc_failed(
                    self,
       t@@ -1790,10 +1786,9 @@ class LNWallet(LNWorker):
                    q.put_nowait(htlc_log)
                else:
                    self.logger.info(f"received unknown htlc_failed, probably from previous session")
       -            if payment_hash not in self.get_payments(status='inflight'):
       -                key = payment_hash.hex()
       -                self.set_invoice_status(key, PR_UNPAID)
       -                util.trigger_callback('payment_failed', self.wallet, key, '')
       +            key = payment_hash.hex()
       +            self.set_invoice_status(key, PR_UNPAID)
       +            util.trigger_callback('payment_failed', self.wallet, key, '')
        
            async def _calc_routing_hints_for_invoice(self, amount_msat: Optional[int]):
                """calculate routing hints (BOLT-11 'r' field)"""