URI: 
       tfollow-up c0bf9b4509cfdeace824a9054d9c90449ef46ad6 - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ff8fc798f41d6c4eb62e484fd37af21a2fe35818
   DIR parent ef5a26544981a426945b1d32b22b170272cb0671
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Fri,  5 Feb 2021 11:33:45 +0100
       
       follow-up c0bf9b4509cfdeace824a9054d9c90449ef46ad6
       
       Diffstat:
         M electrum/lnworker.py                |      20 +++++++++-----------
       
       1 file changed, 9 insertions(+), 11 deletions(-)
       ---
   DIR diff --git a/electrum/lnworker.py b/electrum/lnworker.py
       t@@ -571,7 +571,6 @@ class LNWallet(LNWorker):
                # note: this sweep_address is only used as fallback; as it might result in address-reuse
                self.sweep_address = wallet.get_new_sweep_address_for_channel()
                self.logs = defaultdict(list)  # type: Dict[str, List[PaymentAttemptLog]]  # key is RHASH  # (not persisted)
       -        self.is_routing = set()        # (not persisted) keys of invoices that are in PR_ROUTING state
                # used in tests
                self.enable_htlc_settle = asyncio.Event()
                self.enable_htlc_settle.set()
       t@@ -587,6 +586,7 @@ class LNWallet(LNWorker):
        
                self.swap_manager = SwapManager(wallet=self.wallet, lnworker=self)
                # detect inflight payments
       +        self.inflight_payments = set()        # (not persisted) keys of invoices that are in PR_INFLIGHT state
                for payment_hash in self.get_payments(status='inflight').keys():
                    self.set_invoice_status(payment_hash.hex(), PR_INFLIGHT)
        
       t@@ -971,15 +971,12 @@ class LNWallet(LNWorker):
                    try:
                        # note: path-finding runs in a separate thread so that we don't block the asyncio loop
                        # graph updates might occur during the computation
       -                self.set_invoice_status(key, PR_ROUTING)
       -                util.trigger_callback('invoice_status', self.wallet, key)
       -                route = await run_in_thread(partial(self._create_route_from_invoice, lnaddr, full_path=full_path))
                        self.set_invoice_status(key, PR_INFLIGHT)
                        util.trigger_callback('invoice_status', self.wallet, key)
       +                route = await run_in_thread(partial(self._create_route_from_invoice, lnaddr, full_path=full_path))
                        payment_attempt_log = await self._pay_to_route(route, lnaddr)
                    except Exception as e:
                        log.append(PaymentAttemptLog(success=False, exception=e))
       -                self.set_invoice_status(key, PR_UNPAID)
                        reason = str(e)
                        break
                    log.append(payment_attempt_log)
       t@@ -988,6 +985,7 @@ class LNWallet(LNWorker):
                        break
                else:
                    reason = _('Failed after {} attempts').format(attempts)
       +        self.set_invoice_status(key, PR_PAID if success else PR_UNPAID)
                util.trigger_callback('invoice_status', self.wallet, key)
                if success:
                    util.trigger_callback('payment_succeeded', self.wallet, key)
       t@@ -1312,8 +1310,8 @@ class LNWallet(LNWorker):
            def get_invoice_status(self, invoice):
                key = invoice.rhash
                log = self.logs[key]
       -        if key in self.is_routing:
       -            return PR_ROUTING
       +        if key in self.inflight_payments:
       +            return PR_INFLIGHT
                # status may be PR_FAILED
                status = self.get_payment_status(bfh(key))
                if status == PR_UNPAID and log:
       t@@ -1321,10 +1319,10 @@ class LNWallet(LNWorker):
                return status
        
            def set_invoice_status(self, key, status):
       -        if status == PR_ROUTING:
       -            self.is_routing.add(key)
       -        elif key in self.is_routing:
       -            self.is_routing.remove(key)
       +        if status == PR_INFLIGHT:
       +            self.inflight_payments.add(key)
       +        elif key in self.inflight_payments:
       +            self.inflight_payments.remove(key)
                if status in SAVED_PR_STATUS:
                    self.set_payment_status(bfh(key), status)