From f9a2e7eeb40a18d06acb2d83e7ab29f0c9a16246 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 30 Jul 2019 13:28:01 +0200 Subject: [PATCH] lnworker.get_invoice_status: test if invoice is expired --- electrum/lnaddr.py | 4 +++- electrum/lnworker.py | 8 +++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/electrum/lnaddr.py b/electrum/lnaddr.py index 995c46baf..731e22cf7 100644 --- a/electrum/lnaddr.py +++ b/electrum/lnaddr.py @@ -272,7 +272,9 @@ class LnAddr(object): def get_expiry(self): return int(self.get_tag('x') or '3600') - + def is_expired(self): + now = time.time() + return now > self.get_expiry() + self.date def lndecode(a, verbose=False, expected_hrp=None): if expected_hrp is None: diff --git a/electrum/lnworker.py b/electrum/lnworker.py index aad2dea02..a3bf448b8 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -397,7 +397,13 @@ class LNWallet(LNWorker): if key not in self.invoices: return PR_UNKNOWN invoice, direction, is_paid = self.invoices[key] - return PR_PAID if is_paid else PR_UNPAID + lnaddr = lndecode(invoice, expected_hrp=constants.net.SEGWIT_HRP) + if is_paid: + return PR_PAID + elif lnaddr.is_expired(): + return PR_EXPIRED + else: + return PR_UNPAID def get_payments(self): # return one item per payment_hash