From 827792c14cb11cfca7c8c91af2724c8b15fa2df4 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Wed, 19 Jul 2023 15:38:07 +0200 Subject: [PATCH] lnpeer: simplify maybe_fulfill_htlc --- electrum/lnpeer.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/electrum/lnpeer.py b/electrum/lnpeer.py index 8c3c2bbb9..e92a02bea 100644 --- a/electrum/lnpeer.py +++ b/electrum/lnpeer.py @@ -1751,10 +1751,10 @@ class Peer(Logger): chan: Channel, htlc: UpdateAddHtlc, processed_onion: ProcessedOnionPacket, - is_trampoline: bool = False) -> Tuple[Optional[bytes], Optional[OnionPacket]]: + is_trampoline: bool = False) -> Optional[bytes]: """As a final recipient of an HTLC, decide if we should fulfill it. - Return (preimage, trampoline_onion_packet) with at most a single element not None + Return preimage or None """ def log_fail_reason(reason: str): self.logger.info(f"maybe_fulfill_htlc. will FAIL HTLC: chan {chan.short_channel_id}. " @@ -1812,7 +1812,7 @@ class Peer(Logger): payment_status = self.lnworker.check_received_htlc(payment_secret_from_onion, chan.short_channel_id, htlc, total_msat) if payment_status is None: - return None, None + return None elif payment_status is False: log_fail_reason(f"MPP_TIMEOUT") raise OnionRoutingFailure(code=OnionFailureCode.MPP_TIMEOUT, data=b'') @@ -1822,7 +1822,7 @@ class Peer(Logger): # if there is a trampoline_onion, maybe_fulfill_htlc will be called again if processed_onion.trampoline_onion_packet: # TODO: we should check that all trampoline_onions are the same - return None, processed_onion.trampoline_onion_packet + return None # TODO don't accept payments twice for same invoice # TODO check invoice expiry @@ -1845,7 +1845,7 @@ class Peer(Logger): if preimage: self.logger.info(f"maybe_fulfill_htlc. will FULFILL HTLC: chan {chan.short_channel_id}. htlc={str(htlc)}") self.lnworker.set_request_status(htlc.payment_hash, PR_PAID) - return preimage, None + return preimage def fulfill_htlc(self, chan: Channel, htlc_id: int, preimage: bytes): self.logger.info(f"_fulfill_htlc. chan {chan.short_channel_id}. htlc_id {htlc_id}") @@ -2340,22 +2340,22 @@ class Peer(Logger): onion_packet_bytes=onion_packet_bytes) if processed_onion.are_we_final: # either we are final recipient; or if trampoline, see cases below - preimage, trampoline_onion_packet = self.maybe_fulfill_htlc( + preimage = self.maybe_fulfill_htlc( chan=chan, htlc=htlc, processed_onion=processed_onion) - if trampoline_onion_packet: + if processed_onion.trampoline_onion_packet: # trampoline- recipient or forwarding if not forwarding_info: trampoline_onion = self.process_onion_packet( - trampoline_onion_packet, + processed_onion.trampoline_onion_packet, payment_hash=payment_hash, onion_packet_bytes=onion_packet_bytes, is_trampoline=True) if trampoline_onion.are_we_final: # trampoline- we are final recipient of HTLC - preimage, _ = self.maybe_fulfill_htlc( + preimage = self.maybe_fulfill_htlc( chan=chan, htlc=htlc, processed_onion=trampoline_onion,