Skip to content

Commit e25af3e

Browse files
committed
Call OnionMessageHandler::timer_tick_occurred
lightning-background-processor processes events provided by the PeerManager's OnionMessageHandler for when a connection is needed. If a connection is not established in a reasonable amount of time, drop any buffered onion messages by calling timer_tick_occurred.
1 parent 6ca81ff commit e25af3e

File tree

1 file changed

+20
-4
lines changed
  • lightning-background-processor/src

1 file changed

+20
-4
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ use lightning::events::{Event, PathFailure};
3030
#[cfg(feature = "std")]
3131
use lightning::events::{EventHandler, EventsProvider};
3232
use lightning::ln::channelmanager::ChannelManager;
33+
use lightning::ln::msgs::OnionMessageHandler;
3334
use lightning::ln::peer_handler::APeerManager;
3435
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
3536
use lightning::routing::utxo::UtxoLookup;
@@ -104,6 +105,11 @@ const PING_TIMER: u64 = 30;
104105
#[cfg(test)]
105106
const 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.
108114
const 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

Comments
 (0)