|
|
|
@ -1523,8 +1523,6 @@ class LNWallet(LNWorker): |
|
|
|
self.network.path_finder.update_inflight_htlcs(htlc_log.route, add_htlcs=False) |
|
|
|
self.network.path_finder.update_inflight_htlcs(htlc_log.route, add_htlcs=False) |
|
|
|
return |
|
|
|
return |
|
|
|
# htlc failed |
|
|
|
# htlc failed |
|
|
|
if (attempts is not None and len(log) >= attempts) or (attempts is None and time.time() - paysession.start_time > self.PAYMENT_TIMEOUT): |
|
|
|
|
|
|
|
raise PaymentFailure('Giving up after %d attempts'%len(log)) |
|
|
|
|
|
|
|
# if we get a tmp channel failure, it might work to split the amount and try more routes |
|
|
|
# if we get a tmp channel failure, it might work to split the amount and try more routes |
|
|
|
# if we get a channel update, we might retry the same route and amount |
|
|
|
# if we get a channel update, we might retry the same route and amount |
|
|
|
route = htlc_log.route |
|
|
|
route = htlc_log.route |
|
|
|
@ -1537,6 +1535,11 @@ class LNWallet(LNWorker): |
|
|
|
self.logger.info(f"error reported by {erring_node_id.hex()}") |
|
|
|
self.logger.info(f"error reported by {erring_node_id.hex()}") |
|
|
|
if code == OnionFailureCode.MPP_TIMEOUT: |
|
|
|
if code == OnionFailureCode.MPP_TIMEOUT: |
|
|
|
raise PaymentFailure(failure_msg.code_name()) |
|
|
|
raise PaymentFailure(failure_msg.code_name()) |
|
|
|
|
|
|
|
# errors returned by the next trampoline. |
|
|
|
|
|
|
|
if fwd_trampoline_onion and code in [ |
|
|
|
|
|
|
|
OnionFailureCode.TRAMPOLINE_FEE_INSUFFICIENT, |
|
|
|
|
|
|
|
OnionFailureCode.TRAMPOLINE_EXPIRY_TOO_SOON]: |
|
|
|
|
|
|
|
raise failure_msg |
|
|
|
# trampoline |
|
|
|
# trampoline |
|
|
|
if self.uses_trampoline(): |
|
|
|
if self.uses_trampoline(): |
|
|
|
paysession.handle_failed_trampoline_htlc( |
|
|
|
paysession.handle_failed_trampoline_htlc( |
|
|
|
@ -1544,6 +1547,9 @@ class LNWallet(LNWorker): |
|
|
|
else: |
|
|
|
else: |
|
|
|
self.handle_error_code_from_failed_htlc( |
|
|
|
self.handle_error_code_from_failed_htlc( |
|
|
|
route=route, sender_idx=sender_idx, failure_msg=failure_msg, amount=htlc_log.amount_msat) |
|
|
|
route=route, sender_idx=sender_idx, failure_msg=failure_msg, amount=htlc_log.amount_msat) |
|
|
|
|
|
|
|
# max attempts or timeout |
|
|
|
|
|
|
|
if (attempts is not None and len(log) >= attempts) or (attempts is None and time.time() - paysession.start_time > self.PAYMENT_TIMEOUT): |
|
|
|
|
|
|
|
raise PaymentFailure('Giving up after %d attempts'%len(log)) |
|
|
|
finally: |
|
|
|
finally: |
|
|
|
paysession.is_active = False |
|
|
|
paysession.is_active = False |
|
|
|
if paysession.can_be_deleted(): |
|
|
|
if paysession.can_be_deleted(): |
|
|
|
|