diff options
| author | Adam Soltys <[email protected]> | 2024-03-04 20:35:08 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-03-04 20:35:08 -0800 |
| commit | f1389aa4a1e104e1380da3342f79b0cde6dd5c75 (patch) | |
| tree | 9297d2943ae521cec99431da6bbb5e901adcd65d /lib | |
| parent | f7d75d197aa52312a89ba336b3e75936c65f7c4d (diff) | |
| download | coinos-server-f1389aa4a1e104e1380da3342f79b0cde6dd5c75.tar.gz coinos-server-f1389aa4a1e104e1380da3342f79b0cde6dd5c75.zip | |
payment checking lock
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/payments.js | 9 |
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); |
