@@ -1379,8 +1379,12 @@ where
13791379 }
13801380 } ,
13811381 LdkEvent :: PaymentForwarded {
1382- prev_htlcs,
1383- next_htlcs,
1382+ prev_channel_id,
1383+ next_channel_id,
1384+ prev_user_channel_id,
1385+ next_user_channel_id,
1386+ prev_node_id,
1387+ next_node_id,
13841388 total_fee_earned_msat,
13851389 skimmed_fee_msat,
13861390 claim_from_onchain_tx,
@@ -1391,10 +1395,11 @@ where
13911395 let nodes = read_only_network_graph. nodes ( ) ;
13921396 let channels = self . channel_manager . list_channels ( ) ;
13931397
1394- let node_str = |channel_id : & ChannelId | {
1395- channels
1396- . iter ( )
1397- . find ( |c| c. channel_id == * channel_id)
1398+ let node_str = |channel_id : & Option < ChannelId > | {
1399+ channel_id
1400+ . and_then ( |channel_id| {
1401+ channels. iter ( ) . find ( |c| c. channel_id == channel_id)
1402+ } )
13981403 . and_then ( |channel| {
13991404 nodes. get ( & NodeId :: from_pubkey ( & channel. counterparty . node_id ) )
14001405 } )
@@ -1406,74 +1411,58 @@ where
14061411 } )
14071412 } )
14081413 } ;
1409- let from_prev_str : String = prev_htlcs
1410- . iter ( )
1411- . map ( |htlc| {
1412- format ! ( "with {} on {}" , node_str ( & htlc . channel_id ) , htlc . channel_id )
1413- } )
1414- . collect :: < Vec < _ > > ( )
1415- . join ( ", " ) ;
1416-
1417- let to_next_str : String = next_htlcs
1418- . iter ( )
1419- . map ( |htlc| {
1420- format ! ( "with {} on {}", node_str ( & htlc . channel_id ) , htlc . channel_id )
1421- } )
1422- . collect :: < Vec < _ > > ( )
1423- . join ( ", " ) ;
1414+ let channel_str = | channel_id : & Option < ChannelId > | {
1415+ channel_id
1416+ . map ( |channel_id| format ! ( " with channel {}" , channel_id ) )
1417+ . unwrap_or_default ( )
1418+ } ;
1419+ let from_prev_str = format ! (
1420+ " from {}{}" ,
1421+ node_str ( & prev_channel_id ) ,
1422+ channel_str ( & prev_channel_id )
1423+ ) ;
1424+ let to_next_str = format ! (
1425+ " to {} {}",
1426+ node_str ( & next_channel_id ) ,
1427+ channel_str ( & next_channel_id )
1428+ ) ;
14241429
14251430 let fee_earned = total_fee_earned_msat. unwrap_or ( 0 ) ;
14261431 if claim_from_onchain_tx {
14271432 log_info ! (
14281433 self . logger,
1429- "Forwarded payment with {} inbound HTLC(s) ({}) and {} outbound HTLC(s) ({}) of {}msat, earning {}msat in fees from claiming onchain." ,
1430- prev_htlcs. len( ) ,
1434+ "Forwarded payment{}{} of {}msat, earning {}msat in fees from claiming onchain." ,
14311435 from_prev_str,
1432- next_htlcs. len( ) ,
14331436 to_next_str,
14341437 outbound_amount_forwarded_msat. unwrap_or( 0 ) ,
14351438 fee_earned,
14361439 ) ;
14371440 } else {
14381441 log_info ! (
14391442 self . logger,
1440- "Forwarded payment with {} inbound HTLC(s) ({}) and {} outbound HTLC(s) ({}) of {}msat, earning {}msat in fees." ,
1441- prev_htlcs. len( ) ,
1443+ "Forwarded payment{}{} of {}msat, earning {}msat in fees." ,
14421444 from_prev_str,
1443- next_htlcs. len( ) ,
14441445 to_next_str,
14451446 outbound_amount_forwarded_msat. unwrap_or( 0 ) ,
14461447 fee_earned,
14471448 ) ;
14481449 }
14491450 }
14501451
1451- // We only allow multiple HTLCs in/out for trampoline forwards, which have not yet
1452- // been fully implemented in LDK, so we do not lose any information by just
1453- // reporting the first HTLC in each vec.
1454- debug_assert_eq ! ( prev_htlcs. len( ) , 1 , "unexpected number of prev_htlcs" ) ;
1455- debug_assert_eq ! ( next_htlcs. len( ) , 1 , "unexpected number of next_htlcs" ) ;
1456- let prev_htlc = prev_htlcs
1457- . first ( )
1458- . expect ( "we expect at least one prev_htlc for PaymentForwarded" ) ;
1459- let next_htlc = next_htlcs
1460- . first ( )
1461- . expect ( "we expect at least one next_htlc for PaymentForwarded" ) ;
1462-
14631452 if let Some ( liquidity_source) = self . liquidity_source . as_ref ( ) {
14641453 let skimmed_fee_msat = skimmed_fee_msat. unwrap_or ( 0 ) ;
14651454 liquidity_source
1466- . handle_payment_forwarded ( Some ( next_htlc . channel_id ) , skimmed_fee_msat)
1455+ . handle_payment_forwarded ( next_channel_id , skimmed_fee_msat)
14671456 . await ;
14681457 }
14691458
14701459 let event = Event :: PaymentForwarded {
1471- prev_channel_id : prev_htlc . channel_id ,
1472- next_channel_id : next_htlc . channel_id ,
1473- prev_user_channel_id : prev_htlc . user_channel_id . map ( UserChannelId ) ,
1474- next_user_channel_id : next_htlc . user_channel_id . map ( UserChannelId ) ,
1475- prev_node_id : prev_htlc . node_id ,
1476- next_node_id : next_htlc . node_id ,
1460+ prev_channel_id : prev_channel_id . expect ( "prev_channel_id expected for events generated by LDK versions greater than 0.0.107." ) ,
1461+ next_channel_id : next_channel_id . expect ( "next_channel_id expected for events generated by LDK versions greater than 0.0.107." ) ,
1462+ prev_user_channel_id : prev_user_channel_id . map ( UserChannelId ) ,
1463+ next_user_channel_id : next_user_channel_id . map ( UserChannelId ) ,
1464+ prev_node_id,
1465+ next_node_id,
14771466 total_fee_earned_msat,
14781467 skimmed_fee_msat,
14791468 claim_from_onchain_tx,
0 commit comments