@@ -462,6 +462,7 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
462462		network_update :  Option < NetworkUpdate > , 
463463		short_channel_id :  Option < u64 > , 
464464		payment_failed_permanently :  bool , 
465+ 		node_id :  Option < PublicKey > , 
465466	} 
466467	let  mut  res:  Option < FailureLearnings >  = None ; 
467468	let  mut  htlc_msat = * first_hop_htlc_msat; 
@@ -487,7 +488,8 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
487488				error_code_ret = Some ( BADONION  | PERM  | 24 ) ;  // invalid_onion_blinding 
488489				error_packet_ret = Some ( vec ! [ 0 ;  32 ] ) ; 
489490				res = Some ( FailureLearnings  { 
490- 					network_update :  None ,  short_channel_id :  None ,  payment_failed_permanently :  false 
491+ 					network_update :  None ,  short_channel_id :  None ,  payment_failed_permanently :  false , 
492+ 					node_id :  None , 
491493				} ) ; 
492494				return 
493495			} , 
@@ -519,7 +521,8 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
519521					} 
520522
521523					res = Some ( FailureLearnings  { 
522- 						network_update :  None ,  short_channel_id :  None ,  payment_failed_permanently :  false 
524+ 						network_update :  None ,  short_channel_id :  None ,  payment_failed_permanently :  false , 
525+ 						node_id :  Some ( route_hop. pubkey ) 
523526					} ) ; 
524527					return 
525528				} 
@@ -549,7 +552,8 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
549552				} ) ; 
550553				let  short_channel_id = Some ( route_hop. short_channel_id ) ; 
551554				res = Some ( FailureLearnings  { 
552- 					network_update,  short_channel_id,  payment_failed_permanently :  is_from_final_node
555+ 					network_update,  short_channel_id,  payment_failed_permanently :  is_from_final_node, 
556+ 					node_id :  Some ( route_hop. pubkey ) , 
553557				} ) ; 
554558				return 
555559			} 
@@ -705,7 +709,8 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
705709
706710		res = Some ( FailureLearnings  { 
707711			network_update,  short_channel_id, 
708- 			payment_failed_permanently :  error_code &  PERM  == PERM  && is_from_final_node
712+ 			payment_failed_permanently :  error_code &  PERM  == PERM  && is_from_final_node, 
713+ 			node_id :  Some ( route_hop. pubkey ) , 
709714		} ) ; 
710715
711716		let  ( description,  title)  = errors:: get_onion_error_description ( error_code) ; 
@@ -716,7 +721,7 @@ pub(super) fn process_onion_failure<T: secp256k1::Signing, L: Deref>(
716721		} 
717722	} ) . expect ( "Route that we sent via spontaneously grew invalid keys in the middle of it?" ) ; 
718723	if  let  Some ( FailureLearnings  { 
719- 		network_update,  short_channel_id,  payment_failed_permanently
724+ 		network_update,  short_channel_id,  payment_failed_permanently,  node_id 
720725	} )  = res { 
721726		DecodedOnionFailure  { 
722727			network_update,  short_channel_id,  payment_failed_permanently, 
0 commit comments