@@ -2333,47 +2333,38 @@ where L::Target: Logger {
23332333		} 
23342334	} 
23352335
2336- 	let  mut  selected_paths  = Vec :: < Vec < Result < RouteHop ,   LightningError > > > :: new ( ) ; 
2336+ 	let  mut  paths  = Vec :: new ( ) ; 
23372337	for  payment_path in  selected_route { 
2338- 		let  mut  path = payment_path. hops . iter ( ) . filter ( |( h,  _) | h. candidate . short_channel_id ( ) . is_some ( ) ) 
2339- 			. map ( |( payment_hop,  node_features) | { 
2340- 				Ok ( RouteHop  { 
2341- 					pubkey :  PublicKey :: from_slice ( payment_hop. node_id . as_slice ( ) ) . map_err ( |_| LightningError { err :  format ! ( "Public key {:?} is invalid" ,  & payment_hop. node_id) ,  action :  ErrorAction :: IgnoreAndLog ( Level :: Trace ) } ) ?, 
2342- 					node_features :  node_features. clone ( ) , 
2343- 					short_channel_id :  payment_hop. candidate . short_channel_id ( ) . unwrap ( ) , 
2344- 					channel_features :  payment_hop. candidate . features ( ) , 
2345- 					fee_msat :  payment_hop. fee_msat , 
2346- 					cltv_expiry_delta :  payment_hop. candidate . cltv_expiry_delta ( ) , 
2347- 				} ) 
2348- 		} ) . collect :: < Vec < _ > > ( ) ; 
2338+ 		let  mut  hops = Vec :: with_capacity ( payment_path. hops . len ( ) ) ; 
2339+ 		for  ( hop,  node_features)  in  payment_path. hops . iter ( ) 
2340+ 			. filter ( |( h,  _) | h. candidate . short_channel_id ( ) . is_some ( ) ) 
2341+ 		{ 
2342+ 			hops. push ( RouteHop  { 
2343+ 				pubkey :  PublicKey :: from_slice ( hop. node_id . as_slice ( ) ) . map_err ( |_| LightningError { err :  format ! ( "Public key {:?} is invalid" ,  & hop. node_id) ,  action :  ErrorAction :: IgnoreAndLog ( Level :: Trace ) } ) ?, 
2344+ 				node_features :  node_features. clone ( ) , 
2345+ 				short_channel_id :  hop. candidate . short_channel_id ( ) . unwrap ( ) , 
2346+ 				channel_features :  hop. candidate . features ( ) , 
2347+ 				fee_msat :  hop. fee_msat , 
2348+ 				cltv_expiry_delta :  hop. candidate . cltv_expiry_delta ( ) , 
2349+ 			} ) ; 
2350+ 		} 
23492351		// Propagate the cltv_expiry_delta one hop backwards since the delta from the current hop is 
23502352		// applicable for the previous hop. 
2351- 		path . iter_mut ( ) . rev ( ) . fold ( final_cltv_expiry_delta,  |prev_cltv_expiry_delta,  hop| { 
2352- 			core:: mem:: replace ( & mut  hop. as_mut ( ) . unwrap ( ) . cltv_expiry_delta ,  prev_cltv_expiry_delta) 
2353+ 		hops . iter_mut ( ) . rev ( ) . fold ( final_cltv_expiry_delta,  |prev_cltv_expiry_delta,  hop| { 
2354+ 			core:: mem:: replace ( & mut  hop. cltv_expiry_delta ,  prev_cltv_expiry_delta) 
23532355		} ) ; 
2354- 		selected_paths . push ( path ) ; 
2356+ 		paths . push ( Path   {  hops ,   blinded_tail :   None   } ) ; 
23552357	} 
23562358	// Make sure we would never create a route with more paths than we allow. 
2357- 	debug_assert ! ( selected_paths . len( )  <= payment_params. max_path_count. into( ) ) ; 
2359+ 	debug_assert ! ( paths . len( )  <= payment_params. max_path_count. into( ) ) ; 
23582360
23592361	if  let  Some ( node_features)  = payment_params. payee . node_features ( )  { 
2360- 		for  path in  selected_paths. iter_mut ( )  { 
2361- 			if  let  Ok ( route_hop)  = path. last_mut ( ) . unwrap ( )  { 
2362- 				route_hop. node_features  = node_features. clone ( ) ; 
2363- 			} 
2362+ 		for  path in  paths. iter_mut ( )  { 
2363+ 			path. hops . last_mut ( ) . unwrap ( ) . node_features  = node_features. clone ( ) ; 
23642364		} 
23652365	} 
23662366
2367- 	let  mut  paths:  Vec < Path >  = Vec :: new ( ) ; 
2368- 	for  results_vec in  selected_paths { 
2369- 		let  mut  hops = Vec :: with_capacity ( results_vec. len ( ) ) ; 
2370- 		for  res in  results_vec {  hops. push ( res?) ;  } 
2371- 		paths. push ( Path  {  hops,  blinded_tail :  None  } ) ; 
2372- 	} 
2373- 	let  route = Route  { 
2374- 		paths, 
2375- 		payment_params :  Some ( payment_params. clone ( ) ) , 
2376- 	} ; 
2367+ 	let  route = Route  {  paths,  payment_params :  Some ( payment_params. clone ( ) )  } ; 
23772368	log_info ! ( logger,  "Got route: {}" ,  log_route!( route) ) ; 
23782369	Ok ( route) 
23792370} 
0 commit comments