@@ -11,9 +11,12 @@ use bitcoin::blockdata::script::Builder;
1111use  bitcoin:: blockdata:: transaction:: TxOut ; 
1212use  bitcoin:: hash_types:: BlockHash ; 
1313
14+ use  lightning:: blinded_path:: { BlindedHop ,  BlindedPath } ; 
1415use  lightning:: chain:: transaction:: OutPoint ; 
1516use  lightning:: ln:: channelmanager:: { self ,  ChannelDetails ,  ChannelCounterparty } ; 
17+ use  lightning:: ln:: features:: { BlindedHopFeatures ,  Bolt12InvoiceFeatures } ; 
1618use  lightning:: ln:: msgs; 
19+ use  lightning:: offers:: invoice:: BlindedPayInfo ; 
1720use  lightning:: routing:: gossip:: { NetworkGraph ,  RoutingFees } ; 
1821use  lightning:: routing:: utxo:: { UtxoFuture ,  UtxoLookup ,  UtxoLookupError ,  UtxoResult } ; 
1922use  lightning:: routing:: router:: { find_route,  PaymentParameters ,  RouteHint ,  RouteHintHop ,  RouteParameters } ; 
@@ -315,7 +318,7 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
315318				net_graph. channel_failed_permanent ( short_channel_id) ; 
316319			} , 
317320			_ if  node_pks. is_empty ( )  => { } , 
318- 			_  => { 
321+ 			x  if  x <  250  => { 
319322				let  mut  first_hops_vec = Vec :: new ( ) ; 
320323				// Use macros here and in the blinded match arm to ensure values are fetched from the fuzz 
321324				// input in the same order, for better coverage. 
@@ -330,6 +333,46 @@ pub fn do_test<Out: test_logger::Output>(data: &[u8], out: Out) {
330333					} 
331334				} ) ; 
332335			} , 
336+ 			x => { 
337+ 				let  mut  first_hops_vec = Vec :: new ( ) ; 
338+ 				let  first_hops = first_hops ! ( first_hops_vec) ; 
339+ 				let  mut  last_hops_unblinded = Vec :: new ( ) ; 
340+ 				last_hops ! ( last_hops_unblinded) ; 
341+ 				let  dummy_pk = PublicKey :: from_slice ( & [ 2 ;  33 ] ) . unwrap ( ) ; 
342+ 				let  last_hops:  Vec < ( BlindedPayInfo ,  BlindedPath ) >  = last_hops_unblinded. into_iter ( ) . map ( |hint| { 
343+ 					let  hop = & hint. 0 [ 0 ] ; 
344+ 					let  payinfo = BlindedPayInfo  { 
345+ 						fee_base_msat :  hop. fees . base_msat , 
346+ 						fee_proportional_millionths :  hop. fees . proportional_millionths , 
347+ 						htlc_minimum_msat :  hop. htlc_minimum_msat . unwrap ( ) , 
348+ 						htlc_maximum_msat :  hop. htlc_minimum_msat . unwrap ( ) . saturating_mul ( 100 ) , 
349+ 						cltv_expiry_delta :  hop. cltv_expiry_delta , 
350+ 						features :  BlindedHopFeatures :: empty ( ) , 
351+ 					} ; 
352+ 					let  num_blinded_hops = x % 250 ; 
353+ 					let  mut  blinded_hops = Vec :: new ( ) ; 
354+ 					for  _ in  0 ..num_blinded_hops { 
355+ 						blinded_hops. push ( BlindedHop  { 
356+ 							blinded_node_id :  dummy_pk, 
357+ 							encrypted_payload :  Vec :: new ( ) 
358+ 						} ) ; 
359+ 					} 
360+ 					( payinfo,  BlindedPath  { 
361+ 						introduction_node_id :  hop. src_node_id , 
362+ 						blinding_point :  dummy_pk, 
363+ 						blinded_hops, 
364+ 					} ) 
365+ 				} ) . collect ( ) ; 
366+ 				let  mut  features = Bolt12InvoiceFeatures :: empty ( ) ; 
367+ 				features. set_basic_mpp_optional ( ) ; 
368+ 				find_routes ! ( first_hops,  vec![ dummy_pk] . iter( ) ,  |final_amt,  _,  _| { 
369+ 					RouteParameters  { 
370+ 						payment_params:  PaymentParameters :: blinded( last_hops. clone( ) ) 
371+ 							. with_bolt12_features( features. clone( ) ) . unwrap( ) , 
372+ 						final_value_msat:  final_amt, 
373+ 					} 
374+ 				} ) ; 
375+ 			} 
333376		} 
334377	} 
335378} 
0 commit comments