@@ -30,6 +30,7 @@ use lightning::events::{Event, PathFailure};
3030#[ cfg( feature = "std" ) ]
3131use lightning:: events:: { EventHandler , EventsProvider } ;
3232use lightning:: ln:: channelmanager:: ChannelManager ;
33+ use lightning:: ln:: msgs:: OnionMessageHandler ;
3334use lightning:: ln:: peer_handler:: APeerManager ;
3435use lightning:: routing:: gossip:: { NetworkGraph , P2PGossipSync } ;
3536use lightning:: routing:: utxo:: UtxoLookup ;
@@ -104,6 +105,11 @@ const PING_TIMER: u64 = 30;
104105#[ cfg( test) ]
105106const PING_TIMER : u64 = 1 ;
106107
108+ #[ cfg( not( test) ) ]
109+ const ONION_MESSAGE_HANDLER_TIMER : u64 = 10 ;
110+ #[ cfg( test) ]
111+ const ONION_MESSAGE_HANDLER_TIMER : u64 = 1 ;
112+
107113/// Prune the network graph of stale entries hourly.
108114const NETWORK_PRUNE_TIMER : u64 = 60 * 60 ;
109115
@@ -283,6 +289,7 @@ macro_rules! define_run_body {
283289 $chain_monitor. rebroadcast_pending_claims( ) ;
284290
285291 let mut last_freshness_call = $get_timer( FRESHNESS_TIMER ) ;
292+ let mut last_onion_message_handler_call = $get_timer( ONION_MESSAGE_HANDLER_TIMER ) ;
286293 let mut last_ping_call = $get_timer( PING_TIMER ) ;
287294 let mut last_prune_call = $get_timer( FIRST_NETWORK_PRUNE_TIMER ) ;
288295 let mut last_scorer_persist_call = $get_timer( SCORER_PERSIST_TIMER ) ;
@@ -336,6 +343,11 @@ macro_rules! define_run_body {
336343 $channel_manager. timer_tick_occurred( ) ;
337344 last_freshness_call = $get_timer( FRESHNESS_TIMER ) ;
338345 }
346+ if $timer_elapsed( & mut last_onion_message_handler_call, ONION_MESSAGE_HANDLER_TIMER ) {
347+ log_trace!( $logger, "Calling OnionMessageHandler's timer_tick_occurred" ) ;
348+ $peer_manager. onion_message_handler( ) . timer_tick_occurred( ) ;
349+ last_onion_message_handler_call = $get_timer( ONION_MESSAGE_HANDLER_TIMER ) ;
350+ }
339351 if await_slow {
340352 // On various platforms, we may be starved of CPU cycles for several reasons.
341353 // E.g. on iOS, if we've been in the background, we will be entirely paused.
@@ -1392,9 +1404,11 @@ mod tests {
13921404
13931405 #[ test]
13941406 fn test_timer_tick_called ( ) {
1395- // Test that `ChannelManager::timer_tick_occurred` is called every `FRESHNESS_TIMER`,
1396- // `ChainMonitor::rebroadcast_pending_claims` is called every `REBROADCAST_TIMER`, and
1397- // `PeerManager::timer_tick_occurred` every `PING_TIMER`.
1407+ // Test that:
1408+ // - `ChannelManager::timer_tick_occurred` is called every `FRESHNESS_TIMER`,
1409+ // - `ChainMonitor::rebroadcast_pending_claims` is called every `REBROADCAST_TIMER`,
1410+ // - `PeerManager::timer_tick_occurred` is called every `PING_TIMER`, and
1411+ // - `OnionMessageHandler::timer_tick_occurred` is called every `ONION_MESSAGE_HANDLER_TIMER`.
13981412 let ( _, nodes) = create_nodes ( 1 , "test_timer_tick_called" ) ;
13991413 let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
14001414 let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
@@ -1405,9 +1419,11 @@ mod tests {
14051419 let desired_log_1 = "Calling ChannelManager's timer_tick_occurred" . to_string ( ) ;
14061420 let desired_log_2 = "Calling PeerManager's timer_tick_occurred" . to_string ( ) ;
14071421 let desired_log_3 = "Rebroadcasting monitor's pending claims" . to_string ( ) ;
1422+ let desired_log_4 = "Calling OnionMessageHandler's timer_tick_occurred" . to_string ( ) ;
14081423 if log_entries. get ( & ( "lightning_background_processor" , desired_log_1) ) . is_some ( ) &&
14091424 log_entries. get ( & ( "lightning_background_processor" , desired_log_2) ) . is_some ( ) &&
1410- log_entries. get ( & ( "lightning_background_processor" , desired_log_3) ) . is_some ( ) {
1425+ log_entries. get ( & ( "lightning_background_processor" , desired_log_3) ) . is_some ( ) &&
1426+ log_entries. get ( & ( "lightning_background_processor" , desired_log_4) ) . is_some ( ) {
14111427 break
14121428 }
14131429 }
0 commit comments