@@ -1150,6 +1150,45 @@ fn test_phantom_failure_modified_cltv() {
11501150	expect_payment_failed_conditions ( & nodes[ 0 ] ,  payment_hash,  false ,  fail_conditions) ; 
11511151} 
11521152
1153+ #[ test]  
1154+ fn  test_phantom_failure_expires_too_soon ( )  { 
1155+ 	// Test that we fail back phantoms if the HTLC got delayed and we got blocks in between with 
1156+ 	// the correct error code. 
1157+ 	let  chanmon_cfgs = create_chanmon_cfgs ( 2 ) ; 
1158+ 	let  node_cfgs = create_node_cfgs ( 2 ,  & chanmon_cfgs) ; 
1159+ 	let  node_chanmgrs = create_node_chanmgrs ( 2 ,  & node_cfgs,  & [ None ,  None ] ) ; 
1160+ 	let  nodes = create_network ( 2 ,  & node_cfgs,  & node_chanmgrs) ; 
1161+ 
1162+ 	let  channel = create_announced_chan_between_nodes ( & nodes,  0 ,  1 ,  channelmanager:: provided_init_features ( ) ,  channelmanager:: provided_init_features ( ) ) ; 
1163+ 
1164+ 	// Get the route. 
1165+ 	let  recv_value_msat = 10_000 ; 
1166+ 	let  ( _,  payment_hash,  payment_secret)  = get_payment_preimage_hash ! ( nodes[ 1 ] ,  Some ( recv_value_msat) ) ; 
1167+ 	let  ( mut  route,  phantom_scid)  = get_phantom_route ! ( nodes,  recv_value_msat,  channel) ; 
1168+ 
1169+ 	// Route the HTLC through to the destination. 
1170+ 	nodes[ 0 ] . node . send_payment ( & route,  payment_hash,  & Some ( payment_secret) ,  PaymentId ( payment_hash. 0 ) ) . unwrap ( ) ; 
1171+ 	check_added_monitors ! ( nodes[ 0 ] ,  1 ) ; 
1172+ 	let  update_0 = get_htlc_update_msgs ! ( nodes[ 0 ] ,  nodes[ 1 ] . node. get_our_node_id( ) ) ; 
1173+ 	let  mut  update_add = update_0. update_add_htlcs [ 0 ] . clone ( ) ; 
1174+ 
1175+ 	connect_blocks ( & nodes[ 1 ] ,  CLTV_FAR_FAR_AWAY ) ; 
1176+ 	nodes[ 1 ] . node . handle_update_add_htlc ( & nodes[ 0 ] . node . get_our_node_id ( ) ,  & update_add) ; 
1177+ 	commitment_signed_dance ! ( nodes[ 1 ] ,  nodes[ 0 ] ,  & update_0. commitment_signed,  false ,  true ) ; 
1178+ 
1179+ 	let  update_1 = get_htlc_update_msgs ! ( nodes[ 1 ] ,  nodes[ 0 ] . node. get_our_node_id( ) ) ; 
1180+ 	assert ! ( update_1. update_fail_htlcs. len( )  == 1 ) ; 
1181+ 	let  fail_msg = update_1. update_fail_htlcs [ 0 ] . clone ( ) ; 
1182+ 	nodes[ 0 ] . node . handle_update_fail_htlc ( & nodes[ 1 ] . node . get_our_node_id ( ) ,  & fail_msg) ; 
1183+ 	commitment_signed_dance ! ( nodes[ 0 ] ,  nodes[ 1 ] ,  update_1. commitment_signed,  false ) ; 
1184+ 
1185+ 	// Ensure the payment fails with the expected error. 
1186+ 	let  mut  fail_conditions = PaymentFailedConditions :: new ( ) 
1187+ 		. blamed_scid ( phantom_scid) 
1188+ 		. expected_htlc_error_data ( 0x2000  | 2 ,  & [ ] ) ; 
1189+ 		expect_payment_failed_conditions ( & nodes[ 0 ] ,  payment_hash,  false ,  fail_conditions) ; 
1190+ } 
1191+ 
11531192#[ test]  
11541193fn  test_phantom_failure_too_low_recv_amt ( )  { 
11551194	let  chanmon_cfgs = create_chanmon_cfgs ( 2 ) ; 
0 commit comments