revert 'keep invoice INFLIGHT', check HTLCs before payment attempt
This commit is contained in:
@@ -1042,6 +1042,8 @@ class LNWallet(LNWorker):
|
||||
raise PaymentFailure(_("This invoice has been paid already"))
|
||||
if status == PR_INFLIGHT:
|
||||
raise PaymentFailure(_("A payment was already initiated for this invoice"))
|
||||
if payment_hash in self.get_payments(status='inflight'):
|
||||
raise PaymentFailure(_("A previous attempt to pay this invoice did not clear"))
|
||||
info = PaymentInfo(payment_hash, amount_to_pay, SENT, PR_UNPAID)
|
||||
self.save_payment_info(info)
|
||||
self.wallet.set_label(key, lnaddr.get_description())
|
||||
@@ -1069,11 +1071,6 @@ class LNWallet(LNWorker):
|
||||
self.logger.exception('')
|
||||
success = False
|
||||
reason = str(e)
|
||||
# keep invoice status INFLIGHT as long as HTLCs are inflight
|
||||
# maybe we could add an extra state for the waiting time.
|
||||
while payment_hash in self.get_payments(status='inflight'):
|
||||
self.logger.info('waiting for inflight HTLCs...')
|
||||
await self.sent_htlcs[payment_hash].get()
|
||||
if success:
|
||||
self.set_invoice_status(key, PR_PAID)
|
||||
util.trigger_callback('payment_succeeded', self.wallet, key)
|
||||
@@ -1750,10 +1747,9 @@ class LNWallet(LNWorker):
|
||||
amount_msat=amount_msat)
|
||||
q.put_nowait(htlc_log)
|
||||
else:
|
||||
if payment_hash not in self.get_payments(status='inflight'):
|
||||
key = payment_hash.hex()
|
||||
self.set_invoice_status(key, PR_PAID)
|
||||
util.trigger_callback('payment_succeeded', self.wallet, key)
|
||||
key = payment_hash.hex()
|
||||
self.set_invoice_status(key, PR_PAID)
|
||||
util.trigger_callback('payment_succeeded', self.wallet, key)
|
||||
|
||||
def htlc_failed(
|
||||
self,
|
||||
@@ -1790,10 +1786,9 @@ class LNWallet(LNWorker):
|
||||
q.put_nowait(htlc_log)
|
||||
else:
|
||||
self.logger.info(f"received unknown htlc_failed, probably from previous session")
|
||||
if payment_hash not in self.get_payments(status='inflight'):
|
||||
key = payment_hash.hex()
|
||||
self.set_invoice_status(key, PR_UNPAID)
|
||||
util.trigger_callback('payment_failed', self.wallet, key, '')
|
||||
key = payment_hash.hex()
|
||||
self.set_invoice_status(key, PR_UNPAID)
|
||||
util.trigger_callback('payment_failed', self.wallet, key, '')
|
||||
|
||||
async def _calc_routing_hints_for_invoice(self, amount_msat: Optional[int]):
|
||||
"""calculate routing hints (BOLT-11 'r' field)"""
|
||||
|
||||
Reference in New Issue
Block a user