From 7f1be926fc1acc41776b7ba6f97b762b4586d8d1 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Thu, 19 Mar 2026 23:51:57 -0700 Subject: ensure lightning payments get processed --- index.ts | 3 ++- lib/lightning.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/index.ts b/index.ts index b0b95d7c..28096c11 100644 --- a/index.ts +++ b/index.ts @@ -1,7 +1,7 @@ import app from "$lib/app"; import { admin, auth, optional } from "$lib/auth"; -import { fixBolt12, listenForLightning, replay } from "$lib/lightning"; +import { fixBolt12, listenForLightning, ensureListenerAlive, replay } from "$lib/lightning"; import { startHealthCheck } from "$lib/health"; import { getLocations } from "$lib/locations"; import nwc from "$lib/nwc"; @@ -33,6 +33,7 @@ try { } catch (e) {} setTimeout(listenForLightning, 2000); +setInterval(ensureListenerAlive, 120000); setInterval(sendHeartbeat, 2000); app.get("/balances", info.balances); diff --git a/lib/lightning.ts b/lib/lightning.ts index 764ce627..0de5aa6b 100644 --- a/lib/lightning.ts +++ b/lib/lightning.ts @@ -10,6 +10,7 @@ const LISTENER_RETRY_DELAY = 5000; // 5 seconds const MAX_LISTENER_RETRIES = 10; let listenerRetries = 0; let listenerActive = false; +let lastPayTime = Date.now(); export async function listenForLightning() { if (listenerActive) { @@ -36,6 +37,7 @@ export async function listenForLightning() { } = inv; await s("pay_index", pay_index); + lastPayTime = Date.now(); // Reset retry counter on successful receive if (listenerRetries > 0) { @@ -119,6 +121,13 @@ export async function listenForLightning() { } } +export function ensureListenerAlive() { + if (!listenerActive) { + warn("lightning listener: not active, restarting"); + listenForLightning(); + } +} + export async function replay(index) { const inv = await lnListen.waitanyinvoice(index - 1); const { -- cgit v1.2.3