FIX: process locked script would wrongfully evict successfull payment
This commit is contained in:
parent
ac4461c7f3
commit
53361d2e3a
@ -6,6 +6,12 @@
|
|||||||
import { User, Lock, Paym } from '../class/';
|
import { User, Lock, Paym } from '../class/';
|
||||||
const config = require('../config');
|
const config = require('../config');
|
||||||
|
|
||||||
|
/****** START SET FEES FROM CONFIG AT STARTUP ******/
|
||||||
|
/** GLOBALS */
|
||||||
|
global.forwardFee = config.forwardReserveFee || 0.01;
|
||||||
|
global.internalFee = config.intraHubFee || 0.003;
|
||||||
|
/****** END SET FEES FROM CONFIG AT STARTUP ******/
|
||||||
|
|
||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
var Redis = require('ioredis');
|
var Redis = require('ioredis');
|
||||||
var redis = new Redis(config.redis);
|
var redis = new Redis(config.redis);
|
||||||
@ -20,6 +26,7 @@ let lightning = require('../lightning');
|
|||||||
console.log('fetching listPayments...');
|
console.log('fetching listPayments...');
|
||||||
let tempPaym = new Paym(redis, bitcoinclient, lightning);
|
let tempPaym = new Paym(redis, bitcoinclient, lightning);
|
||||||
let listPayments = await tempPaym.listPayments();
|
let listPayments = await tempPaym.listPayments();
|
||||||
|
// DEBUG let listPayments = JSON.parse(fs.readFileSync('listpayments.txt').toString('ascii'));
|
||||||
console.log('done', 'got', listPayments['payments'].length, 'payments');
|
console.log('done', 'got', listPayments['payments'].length, 'payments');
|
||||||
fs.writeFileSync('listPayments.json', JSON.stringify(listPayments['payments'], null, 2));
|
fs.writeFileSync('listPayments.json', JSON.stringify(listPayments['payments'], null, 2));
|
||||||
|
|
||||||
@ -30,7 +37,7 @@ let lightning = require('../lightning');
|
|||||||
let user = new User(redis, bitcoinclient, lightning);
|
let user = new User(redis, bitcoinclient, lightning);
|
||||||
user._userid = userid;
|
user._userid = userid;
|
||||||
let lockedPayments = await user.getLockedPayments();
|
let lockedPayments = await user.getLockedPayments();
|
||||||
// lockedPayments = [{pay_req : 'lnbc2m1pwgd4tdpp5vjz80mm8murdkskrnre6w4kphzy3d6gap5jyffr93u02ruaj0wtsdq2xgcrqvpsxqcqzysk34zva4h9ce9jdf08nfdm2sh2ek4y4hjse8ww9jputneltjl24krkv50sene4jh0wpull6ujgrg632u2qt3lkva74vpkqr5e5tuuljspasqfhx'}];
|
// DEBUG let lockedPayments = [{ pay_req : 'lnbc108130n1pshdaeupp58kw9djt9vcdx26wkdxl07tgncdmxz2w7s9hzul45tf8gfplme94sdqqcqzzgxqrrssrzjqw8c7yfutqqy3kz8662fxutjvef7q2ujsxtt45csu0k688lkzu3ld93gutl3k6wauyqqqqryqqqqthqqpysp5jcmk82hypuud0lhpf66dg3w5ta6aumc4w9g9sxljazglq9wkwstq9qypqsqnw8hwwauvzrala3g4yrkgazk2l2fh582j9ytz7le46gmsgglvmrknx842ej9z4c63en5866l8tpevm8cwul8g94kf2nepppn256unucp43jnsw', amount: 10813, timestamp: 1635186606 }];
|
||||||
|
|
||||||
for (let lockedPayment of lockedPayments) {
|
for (let lockedPayment of lockedPayments) {
|
||||||
let daysPassed = (+new Date() / 1000 - lockedPayment.timestamp) / 3600 / 24;
|
let daysPassed = (+new Date() / 1000 - lockedPayment.timestamp) / 3600 / 24;
|
||||||
@ -38,8 +45,25 @@ let lightning = require('../lightning');
|
|||||||
|
|
||||||
let payment = new Paym(redis, bitcoinclient, lightning);
|
let payment = new Paym(redis, bitcoinclient, lightning);
|
||||||
payment.setInvoice(lockedPayment.pay_req);
|
payment.setInvoice(lockedPayment.pay_req);
|
||||||
|
|
||||||
|
// first things first:
|
||||||
|
// trying to lookup this stuck payment in an array of delivered payments
|
||||||
|
let isPaid = false;
|
||||||
|
for (let sentPayment of listPayments['payments']) {
|
||||||
|
if ((await payment.getPaymentHash()) == sentPayment.payment_hash) {
|
||||||
|
console.log('found this payment in listPayments array, so it is paid successfully');
|
||||||
|
let sendResult = payment.processSendPaymentResponse({ payment_error: 'already paid' } /* hacky */); // adds fees
|
||||||
|
console.log('saving paid invoice:', sendResult);
|
||||||
|
await user.savePaidLndInvoice(sendResult);
|
||||||
|
await user.unlockFunds(lockedPayment.pay_req);
|
||||||
|
isPaid = true;
|
||||||
|
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', await payment.getPaymentHash(), sentPayment.payment_hash);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// could not find...
|
||||||
|
|
||||||
if (daysPassed > 1 / 24 && daysPassed <= 1) {
|
if (daysPassed > 1 / 24 && daysPassed <= 1) {
|
||||||
// if (!await payment.isExpired()) {
|
|
||||||
let sendResult;
|
let sendResult;
|
||||||
console.log('attempting to pay to route');
|
console.log('attempting to pay to route');
|
||||||
try {
|
try {
|
||||||
@ -68,22 +92,7 @@ let lightning = require('../lightning');
|
|||||||
console.log('-----------------------------------------------------------------------------------');
|
console.log('-----------------------------------------------------------------------------------');
|
||||||
await User._sleep(0);
|
await User._sleep(0);
|
||||||
} else if (daysPassed > 1) {
|
} else if (daysPassed > 1) {
|
||||||
// trying to lookup this stuck payment in an array of delivered payments
|
// could not find in listpayments array; too late to retry
|
||||||
let isPaid = false;
|
|
||||||
for (let sentPayment of listPayments['payments']) {
|
|
||||||
if ((await payment.getPaymentHash()) == sentPayment.payment_hash) {
|
|
||||||
console.log('found this payment in listPayments array, so it is paid successfully');
|
|
||||||
let sendResult = payment.processSendPaymentResponse({ payment_error: 'already paid' } /* hacky */); // adds fees
|
|
||||||
console.log('saving paid invoice:', sendResult);
|
|
||||||
await user.savePaidLndInvoice(sendResult);
|
|
||||||
await user.unlockFunds(lockedPayment.pay_req);
|
|
||||||
isPaid = true;
|
|
||||||
console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', await payment.getPaymentHash(), sentPayment.payment_hash);
|
|
||||||
process.exit();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isPaid) {
|
if (!isPaid) {
|
||||||
console.log('very old payment, evict the lock');
|
console.log('very old payment, evict the lock');
|
||||||
await user.unlockFunds(lockedPayment.pay_req);
|
await user.unlockFunds(lockedPayment.pay_req);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user