From 38ec72527f165705133d440cff23a356c5907ab7 Mon Sep 17 00:00:00 2001 From: SomberNight Date: Sun, 7 May 2023 00:39:06 +0000 Subject: [PATCH] wallet.get_bolt11_invoice: handle request not having LN part fixes https://github.com/spesmilo/electrum/issues/8402 To reproduce, - create wallet from a zpub - LN is disabled there by default - create a receive request, which won't have a lightning part - enable config var "bip21_lightning" - enable LN - existing request is now ~breaking receive tab --- electrum/lnworker.py | 2 ++ electrum/wallet.py | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/electrum/lnworker.py b/electrum/lnworker.py index 054fa4c15..0994b4e38 100644 --- a/electrum/lnworker.py +++ b/electrum/lnworker.py @@ -1801,6 +1801,7 @@ class LNWallet(LNWorker): fallback_address: Optional[str], channels: Optional[Sequence[Channel]] = None, ) -> Tuple[LnAddr, str]: + assert isinstance(payment_hash, bytes), f"expected bytes, but got {type(payment_hash)}" pair = self._bolt11_cache.get(payment_hash) if pair: @@ -1856,6 +1857,7 @@ class LNWallet(LNWorker): self.wallet.save_db() def get_preimage(self, payment_hash: bytes) -> Optional[bytes]: + assert isinstance(payment_hash, bytes), f"expected bytes, but got {type(payment_hash)}" r = self.preimages.get(payment_hash.hex()) return bytes.fromhex(r) if r else None diff --git a/electrum/wallet.py b/electrum/wallet.py index 711923f08..567bb4fce 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -2605,10 +2605,12 @@ class Abstract_Wallet(ABC, Logger, EventListener): def get_bolt11_invoice(self, req: Request) -> str: if not self.lnworker: return '' + if (payment_hash := req.payment_hash) is None: # e.g. req might have been generated before enabling LN + return '' amount_msat = req.get_amount_msat() or None assert (amount_msat is None or amount_msat > 0), amount_msat lnaddr, invoice = self.lnworker.get_bolt11_invoice( - payment_hash=req.payment_hash, + payment_hash=payment_hash, amount_msat=amount_msat, message=req.message, expiry=req.exp,