From f1389aa4a1e104e1380da3342f79b0cde6dd5c75 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Mon, 4 Mar 2024 20:35:08 -0800 Subject: payment checking lock --- lib/payments.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/payments.js b/lib/payments.js index 2d1bf6c0..5958bc14 100644 --- a/lib/payments.js +++ b/lib/payments.js @@ -439,6 +439,7 @@ let getMaxFee = (n) => : n * 0.01, ); +let checking = {}; export let sendLightning = async ({ user, pr, amount, maxfee, memo }) => { let p; let hash = pr; @@ -481,14 +482,18 @@ export let sendLightning = async ({ user, pr, amount, maxfee, memo }) => { }); let check = async () => { + if (checking(pr)) return; + checking[pr] = true; + try { let { pays } = await ln.listpays(pr); - let recordExists = !!(await g(`payment:${p.id}`)); + let recordExists = !!(await g(`payment:${pr}`)); let paymentFailed = !pays.length || pays.every((p) => p.status === "failed"); if (recordExists && paymentFailed) { + await db.del(`payment:${pr}`); await db.del(`payment:${p.id}`); let ourfee = p.ourfee || 0; @@ -503,6 +508,8 @@ export let sendLightning = async ({ user, pr, amount, maxfee, memo }) => { } catch (e) { err("Failed to reverse payment", r); } + + checking[pr] = false; }; let interval = setInterval(check, 5000); -- cgit v1.2.3