From: Valentine Wallace Date: Thu, 26 Oct 2023 22:52:29 +0000 (-0400) Subject: Set HTLCPreviousHopData::blinded for blinded received HTLCs. X-Git-Tag: v0.0.119~9^2~20 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=e4485cffb3562e10de252894d18b4d4729cd2307;p=rust-lightning Set HTLCPreviousHopData::blinded for blinded received HTLCs. Will be used in the next commit(s) to let us know to fail blinded received HTLCs backwards with the malformed and invalid_onion_blinding error per BOLT 4. --- diff --git a/lightning/src/ln/channelmanager.rs b/lightning/src/ln/channelmanager.rs index b925d842e..107ef72a1 100644 --- a/lightning/src/ln/channelmanager.rs +++ b/lightning/src/ln/channelmanager.rs @@ -201,11 +201,11 @@ pub struct BlindedForward { impl PendingHTLCRouting { // Used to override the onion failure code and data if the HTLC is blinded. fn blinded_failure(&self) -> Option { - // TODO: needs update when we support receiving to multi-hop blinded paths - if let Self::Forward { blinded: Some(_), .. } = self { - Some(BlindedFailure::FromIntroductionNode) - } else { - None + // TODO: needs update when we support forwarding blinded HTLCs as non-intro node + match self { + Self::Forward { blinded: Some(_), .. } => Some(BlindedFailure::FromIntroductionNode), + Self::Receive { requires_blinded_error: true, .. } => Some(BlindedFailure::FromBlindedNode), + _ => None, } } } @@ -291,7 +291,7 @@ pub(super) enum HTLCForwardInfo { } // Used for failing blinded HTLCs backwards correctly. -#[derive(Clone, Debug, Hash, PartialEq, Eq)] +#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)] enum BlindedFailure { FromIntroductionNode, FromBlindedNode, @@ -4462,7 +4462,7 @@ where htlc_id: $htlc.prev_hop.htlc_id, incoming_packet_shared_secret: $htlc.prev_hop.incoming_packet_shared_secret, phantom_shared_secret, - blinded_failure: None, + blinded_failure, }), payment_hash, HTLCFailReason::reason(0x4000 | 15, htlc_msat_height_data), HTLCDestination::FailedPayment { payment_hash: $payment_hash },