blitz_api/app/lightning
Justin Sharp d415fb30fd fix: handle missing bolt11 in CLN list_payments for keysend/BOLT12
Follow-up to #290 — same class of bug, different code path.

list_payments() in cln_jrpc.py unconditionally indexed p["bolt11"] for any
incomplete payment, causing a KeyError -> the function returned None and
then list_all_tx() crashed with `TypeError: 'NoneType' object is not
iterable`, returning HTTP 500 to the Transactions view.

CLN's `listpays` does not include `bolt11` for keysend payments or for
BOLT12 offer payments, so any node that has ever made one of those will
hit this on every Transactions load.

Fix: guard the bolt11 decode the same way #290 guards invoice fields —
only decode when bolt11 is present, and fall back to amount_sent_msat
when neither bolt11 nor amount_msat are available, so the payment still
shows up in the list.

Reproduced on RaspiBlitz v1.12.1 with Core Lightning v25.12.1 and a
keysend payment in history.
2026-05-12 19:01:33 +02:00
..
impl fix: handle missing bolt11 in CLN list_payments for keysend/BOLT12 2026-05-12 19:01:33 +02:00
docs.py feat: implement Ruff as a linter; fix given errors 2023-06-25 07:17:00 +02:00
exceptions.py feat: proper error handling resolving peer aliases 2023-05-01 20:48:10 +02:00
models.py chore: clean up imports; add better LND error logging 2026-02-03 11:05:19 +01:00
router.py chore: run ruff format and isort 2025-05-06 09:16:46 +02:00
service.py fix(lightning): get_ln_info returns stub in bitcoin-only mode 2026-05-07 19:18:39 +02:00
utils.py feat: implement Ruff as a linter; fix given errors 2023-06-25 07:17:00 +02:00