@@ -30,6 +30,7 @@ use lightning::events::{Event, PathFailure};
30
30
#[ cfg( feature = "std" ) ]
31
31
use lightning:: events:: { EventHandler , EventsProvider } ;
32
32
use lightning:: ln:: channelmanager:: ChannelManager ;
33
+ use lightning:: ln:: msgs:: OnionMessageHandler ;
33
34
use lightning:: ln:: peer_handler:: APeerManager ;
34
35
use lightning:: routing:: gossip:: { NetworkGraph , P2PGossipSync } ;
35
36
use lightning:: routing:: utxo:: UtxoLookup ;
@@ -104,6 +105,11 @@ const PING_TIMER: u64 = 30;
104
105
#[ cfg( test) ]
105
106
const PING_TIMER : u64 = 1 ;
106
107
108
+ #[ cfg( not( test) ) ]
109
+ const ONION_MESSAGE_HANDLER_TIMER : u64 = 10 ;
110
+ #[ cfg( test) ]
111
+ const ONION_MESSAGE_HANDLER_TIMER : u64 = 1 ;
112
+
107
113
/// Prune the network graph of stale entries hourly.
108
114
const NETWORK_PRUNE_TIMER : u64 = 60 * 60 ;
109
115
@@ -283,6 +289,7 @@ macro_rules! define_run_body {
283
289
$chain_monitor. rebroadcast_pending_claims( ) ;
284
290
285
291
let mut last_freshness_call = $get_timer( FRESHNESS_TIMER ) ;
292
+ let mut last_onion_message_handler_call = $get_timer( ONION_MESSAGE_HANDLER_TIMER ) ;
286
293
let mut last_ping_call = $get_timer( PING_TIMER ) ;
287
294
let mut last_prune_call = $get_timer( FIRST_NETWORK_PRUNE_TIMER ) ;
288
295
let mut last_scorer_persist_call = $get_timer( SCORER_PERSIST_TIMER ) ;
@@ -336,6 +343,11 @@ macro_rules! define_run_body {
336
343
$channel_manager. timer_tick_occurred( ) ;
337
344
last_freshness_call = $get_timer( FRESHNESS_TIMER ) ;
338
345
}
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
+ }
339
351
if await_slow {
340
352
// On various platforms, we may be starved of CPU cycles for several reasons.
341
353
// E.g. on iOS, if we've been in the background, we will be entirely paused.
@@ -1392,9 +1404,11 @@ mod tests {
1392
1404
1393
1405
#[ test]
1394
1406
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`.
1398
1412
let ( _, nodes) = create_nodes ( 1 , "test_timer_tick_called" ) ;
1399
1413
let data_dir = nodes[ 0 ] . kv_store . get_data_dir ( ) ;
1400
1414
let persister = Arc :: new ( Persister :: new ( data_dir) ) ;
@@ -1405,9 +1419,11 @@ mod tests {
1405
1419
let desired_log_1 = "Calling ChannelManager's timer_tick_occurred" . to_string ( ) ;
1406
1420
let desired_log_2 = "Calling PeerManager's timer_tick_occurred" . to_string ( ) ;
1407
1421
let desired_log_3 = "Rebroadcasting monitor's pending claims" . to_string ( ) ;
1422
+ let desired_log_4 = "Calling OnionMessageHandler's timer_tick_occurred" . to_string ( ) ;
1408
1423
if log_entries. get ( & ( "lightning_background_processor" , desired_log_1) ) . is_some ( ) &&
1409
1424
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 ( ) {
1411
1427
break
1412
1428
}
1413
1429
}
0 commit comments