aboutsummaryrefslogtreecommitdiffstats
path: root/lib/payments.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2024-03-04 20:35:08 -0800
committerAdam Soltys <[email protected]>2024-03-04 20:35:08 -0800
commitf1389aa4a1e104e1380da3342f79b0cde6dd5c75 (patch)
tree9297d2943ae521cec99431da6bbb5e901adcd65d /lib/payments.js
parentf7d75d197aa52312a89ba336b3e75936c65f7c4d (diff)
downloadcoinos-server-f1389aa4a1e104e1380da3342f79b0cde6dd5c75.tar.gz
coinos-server-f1389aa4a1e104e1380da3342f79b0cde6dd5c75.zip
payment checking lock
Diffstat (limited to 'lib/payments.js')
-rw-r--r--lib/payments.js9
1 files changed, 8 insertions, 1 deletions
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);