Skip to content

Commit 6ca4622

Browse files
committed
Switch to using the OnionMessenger directly in BP
When `OnionMessenger` first developed a timer and events interface, we accessed the `OnionMessenger` indirectly via the `PeerManager`. While this is a fairly awkward interface, it avoided a large pile of generics on the background processor interfaces. However, since we now have an `AOnionMessenger` trait, this concern is no longer significant. Further, because we now want to use the built-in `OnionMessenger` async event processing method, we really need a direct referene to the `OnionMessenger` in the background processor, which we add here optionally.
1 parent 3a3a45c commit 6ca4622

File tree

1 file changed

+37
-41
lines changed
  • lightning-background-processor/src

1 file changed

+37
-41
lines changed

lightning-background-processor/src/lib.rs

+37-41
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ use lightning::events::EventsProvider;
3232

3333
use lightning::ln::channelmanager::AChannelManager;
3434
use lightning::ln::msgs::OnionMessageHandler;
35+
use lightning::onion_message::messenger::AOnionMessenger;
3536
use lightning::ln::peer_handler::APeerManager;
3637
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
3738
use lightning::routing::utxo::UtxoLookup;
@@ -281,7 +282,8 @@ macro_rules! define_run_body {
281282
(
282283
$persister: ident, $chain_monitor: ident, $process_chain_monitor_events: expr,
283284
$channel_manager: ident, $process_channel_manager_events: expr,
284-
$peer_manager: ident, $process_onion_message_handler_events: expr, $gossip_sync: ident,
285+
$onion_messenger: ident, $process_onion_message_handler_events: expr,
286+
$peer_manager: ident, $gossip_sync: ident,
285287
$logger: ident, $scorer: ident, $loop_exit_check: expr, $await: expr, $get_timer: expr,
286288
$timer_elapsed: expr, $check_slow_await: expr, $time_fetch: expr,
287289
) => { {
@@ -347,8 +349,10 @@ macro_rules! define_run_body {
347349
last_freshness_call = $get_timer(FRESHNESS_TIMER);
348350
}
349351
if $timer_elapsed(&mut last_onion_message_handler_call, ONION_MESSAGE_HANDLER_TIMER) {
350-
log_trace!($logger, "Calling OnionMessageHandler's timer_tick_occurred");
351-
$peer_manager.onion_message_handler().timer_tick_occurred();
352+
if let Some(om) = &$onion_messenger {
353+
log_trace!($logger, "Calling OnionMessageHandler's timer_tick_occurred");
354+
om.get_om().timer_tick_occurred();
355+
}
352356
last_onion_message_handler_call = $get_timer(ONION_MESSAGE_HANDLER_TIMER);
353357
}
354358
if await_slow {
@@ -651,6 +655,7 @@ pub async fn process_events_async<
651655
PS: 'static + Deref + Send,
652656
M: 'static + Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>> + Send + Sync,
653657
CM: 'static + Deref + Send + Sync,
658+
OM: 'static + Deref + Send + Sync,
654659
PGS: 'static + Deref<Target = P2PGossipSync<G, UL, L>> + Send + Sync,
655660
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
656661
PM: 'static + Deref + Send + Sync,
@@ -661,6 +666,7 @@ pub async fn process_events_async<
661666
FetchTime: Fn() -> Option<Duration>,
662667
>(
663668
persister: PS, event_handler: EventHandler, chain_monitor: M, channel_manager: CM,
669+
onion_messenger: Option<OM>,
664670
gossip_sync: GossipSync<PGS, RGS, G, UL, L>, peer_manager: PM, logger: L, scorer: Option<S>,
665671
sleeper: Sleeper, mobile_interruptable_platform: bool, fetch_time: FetchTime,
666672
) -> Result<(), lightning::io::Error>
@@ -673,6 +679,7 @@ where
673679
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
674680
PS::Target: 'static + Persister<'a, CM, L, SC>,
675681
CM::Target: AChannelManager + Send + Sync,
682+
OM::Target: AOnionMessenger + Send + Sync,
676683
PM::Target: APeerManager + Send + Sync,
677684
{
678685
let mut should_break = false;
@@ -704,8 +711,8 @@ where
704711
persister, chain_monitor,
705712
chain_monitor.process_pending_events_async(async_event_handler).await,
706713
channel_manager, channel_manager.get_cm().process_pending_events_async(async_event_handler).await,
707-
peer_manager, process_onion_message_handler_events_async(&peer_manager, async_event_handler).await,
708-
gossip_sync, logger, scorer, should_break, {
714+
onion_messegner, if let Some(om) = &onion_messenger { om.get_om().process_pending_events_async(async_event_handler).await },
715+
peer_manager, gossip_sync, logger, scorer, should_break, {
709716
let fut = Selector {
710717
a: channel_manager.get_cm().get_event_or_persistence_needed_future(),
711718
b: chain_monitor.get_update_future(),
@@ -729,25 +736,6 @@ where
729736
)
730737
}
731738

732-
#[cfg(feature = "futures")]
733-
async fn process_onion_message_handler_events_async<
734-
EventHandlerFuture: core::future::Future<Output = ()>,
735-
EventHandler: Fn(Event) -> EventHandlerFuture,
736-
PM: 'static + Deref + Send + Sync,
737-
>(
738-
peer_manager: &PM, handler: EventHandler
739-
)
740-
where
741-
PM::Target: APeerManager + Send + Sync,
742-
{
743-
let events = core::cell::RefCell::new(Vec::new());
744-
peer_manager.onion_message_handler().process_pending_events(&|e| events.borrow_mut().push(e));
745-
746-
for event in events.into_inner() {
747-
handler(event).await
748-
}
749-
}
750-
751739
#[cfg(feature = "std")]
752740
impl BackgroundProcessor {
753741
/// Start a background thread that takes care of responsibilities enumerated in the [top-level
@@ -807,13 +795,15 @@ impl BackgroundProcessor {
807795
PS: 'static + Deref + Send,
808796
M: 'static + Deref<Target = ChainMonitor<<CM::Target as AChannelManager>::Signer, CF, T, F, L, P>> + Send + Sync,
809797
CM: 'static + Deref + Send + Sync,
798+
OM: 'static + Deref + Send + Sync,
810799
PGS: 'static + Deref<Target = P2PGossipSync<G, UL, L>> + Send + Sync,
811800
RGS: 'static + Deref<Target = RapidGossipSync<G, L>> + Send,
812801
PM: 'static + Deref + Send + Sync,
813802
S: 'static + Deref<Target = SC> + Send + Sync,
814803
SC: for <'b> WriteableScore<'b>,
815804
>(
816805
persister: PS, event_handler: EH, chain_monitor: M, channel_manager: CM,
806+
onion_messenger: Option<OM>,
817807
gossip_sync: GossipSync<PGS, RGS, G, UL, L>, peer_manager: PM, logger: L, scorer: Option<S>,
818808
) -> Self
819809
where
@@ -825,6 +815,7 @@ impl BackgroundProcessor {
825815
P::Target: 'static + Persist<<CM::Target as AChannelManager>::Signer>,
826816
PS::Target: 'static + Persister<'a, CM, L, SC>,
827817
CM::Target: AChannelManager + Send + Sync,
818+
OM::Target: AOnionMessenger + Send + Sync,
828819
PM::Target: APeerManager + Send + Sync,
829820
{
830821
let stop_thread = Arc::new(AtomicBool::new(false));
@@ -851,9 +842,8 @@ impl BackgroundProcessor {
851842
define_run_body!(
852843
persister, chain_monitor, chain_monitor.process_pending_events(&event_handler),
853844
channel_manager, channel_manager.get_cm().process_pending_events(&event_handler),
854-
peer_manager,
855-
peer_manager.onion_message_handler().process_pending_events(&event_handler),
856-
gossip_sync, logger, scorer, stop_thread.load(Ordering::Acquire),
845+
onion_messenger, if let Some(om) = &onion_messenger { om.get_om().process_pending_events(&event_handler) },
846+
peer_manager, gossip_sync, logger, scorer, stop_thread.load(Ordering::Acquire),
857847
{ Sleeper::from_two_futures(
858848
&channel_manager.get_cm().get_event_or_persistence_needed_future(),
859849
&chain_monitor.get_update_future()
@@ -939,6 +929,7 @@ mod tests {
939929
use lightning::ln::functional_test_utils::*;
940930
use lightning::ln::msgs::{ChannelMessageHandler, Init};
941931
use lightning::ln::peer_handler::{PeerManager, MessageHandler, SocketDescriptor, IgnoringMessageHandler};
932+
use lightning::onion_message::messenger::{DefaultMessageRouter, OnionMessenger};
942933
use lightning::routing::gossip::{NetworkGraph, P2PGossipSync};
943934
use lightning::routing::scoring::{ChannelUsage, ScoreUpdate, ScoreLookUp, LockableScore};
944935
use lightning::routing::router::{DefaultRouter, Path, RouteHop, CandidateRouteHop};
@@ -1000,11 +991,14 @@ mod tests {
1000991
type PGS = Arc<P2PGossipSync<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestChainSource>, Arc<test_utils::TestLogger>>>;
1001992
type RGS = Arc<RapidGossipSync<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestLogger>>>;
1002993

994+
type OM = OnionMessenger<Arc<KeysManager>, Arc<KeysManager>, Arc<test_utils::TestLogger>, Arc<ChannelManager>, Arc<DefaultMessageRouter<Arc<NetworkGraph<Arc<test_utils::TestLogger>>>, Arc<test_utils::TestLogger>, Arc<KeysManager>>>, IgnoringMessageHandler, IgnoringMessageHandler>;
995+
1003996
struct Node {
1004997
node: Arc<ChannelManager>,
998+
messenger: Arc<OM>,
1005999
p2p_gossip_sync: PGS,
10061000
rapid_gossip_sync: RGS,
1007-
peer_manager: Arc<PeerManager<TestDescriptor, Arc<test_utils::TestChannelMessageHandler>, Arc<test_utils::TestRoutingMessageHandler>, IgnoringMessageHandler, Arc<test_utils::TestLogger>, IgnoringMessageHandler, Arc<KeysManager>>>,
1001+
peer_manager: Arc<PeerManager<TestDescriptor, Arc<test_utils::TestChannelMessageHandler>, Arc<test_utils::TestRoutingMessageHandler>, Arc<OM>, Arc<test_utils::TestLogger>, IgnoringMessageHandler, Arc<KeysManager>>>,
10081002
chain_monitor: Arc<ChainMonitor>,
10091003
kv_store: Arc<FilesystemStore>,
10101004
tx_broadcaster: Arc<test_utils::TestBroadcaster>,
@@ -1283,6 +1277,7 @@ mod tests {
12831277
let seed = [i as u8; 32];
12841278
let keys_manager = Arc::new(KeysManager::new(&seed, now.as_secs(), now.subsec_nanos()));
12851279
let router = Arc::new(DefaultRouter::new(network_graph.clone(), logger.clone(), Arc::clone(&keys_manager), scorer.clone(), Default::default()));
1280+
let msg_router = Arc::new(DefaultMessageRouter::new(network_graph.clone(), Arc::clone(&keys_manager)));
12861281
let chain_source = Arc::new(test_utils::TestChainSource::new(Network::Bitcoin));
12871282
let kv_store = Arc::new(FilesystemStore::new(format!("{}_persister_{}", &persist_dir, i).into()));
12881283
let now = Duration::from_secs(genesis_block.header.time as u64);
@@ -1291,6 +1286,7 @@ mod tests {
12911286
let best_block = BestBlock::from_network(network);
12921287
let params = ChainParameters { network, best_block };
12931288
let manager = Arc::new(ChannelManager::new(fee_estimator.clone(), chain_monitor.clone(), tx_broadcaster.clone(), router.clone(), logger.clone(), keys_manager.clone(), keys_manager.clone(), keys_manager.clone(), UserConfig::default(), params, genesis_block.header.time));
1289+
let messenger = Arc::new(OnionMessenger::new(keys_manager.clone(), keys_manager.clone(), logger.clone(), manager.clone(), msg_router.clone(), IgnoringMessageHandler {}, IgnoringMessageHandler {}));
12941290
let wallet = Arc::new(TestWallet {});
12951291
let sweeper = Arc::new(OutputSweeper::new(best_block, Arc::clone(&tx_broadcaster), Arc::clone(&fee_estimator),
12961292
None::<Arc<dyn Filter + Sync + Send>>, Arc::clone(&keys_manager), wallet, Arc::clone(&kv_store), Arc::clone(&logger)));
@@ -1299,10 +1295,10 @@ mod tests {
12991295
let msg_handler = MessageHandler {
13001296
chan_handler: Arc::new(test_utils::TestChannelMessageHandler::new(ChainHash::using_genesis_block(Network::Testnet))),
13011297
route_handler: Arc::new(test_utils::TestRoutingMessageHandler::new()),
1302-
onion_message_handler: IgnoringMessageHandler{}, custom_message_handler: IgnoringMessageHandler{}
1298+
onion_message_handler: messenger.clone(), custom_message_handler: IgnoringMessageHandler{}
13031299
};
13041300
let peer_manager = Arc::new(PeerManager::new(msg_handler, 0, &seed, logger.clone(), keys_manager.clone()));
1305-
let node = Node { node: manager, p2p_gossip_sync, rapid_gossip_sync, peer_manager, chain_monitor, kv_store, tx_broadcaster, network_graph, logger, best_block, scorer, sweeper };
1301+
let node = Node { node: manager, p2p_gossip_sync, rapid_gossip_sync, peer_manager, chain_monitor, kv_store, tx_broadcaster, network_graph, logger, best_block, scorer, sweeper, messenger };
13061302
nodes.push(node);
13071303
}
13081304

@@ -1425,7 +1421,7 @@ mod tests {
14251421
let data_dir = nodes[0].kv_store.get_data_dir();
14261422
let persister = Arc::new(Persister::new(data_dir));
14271423
let event_handler = |_: _| {};
1428-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].p2p_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1424+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].p2p_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
14291425

14301426
macro_rules! check_persisted_data {
14311427
($node: expr, $filepath: expr) => {
@@ -1492,7 +1488,7 @@ mod tests {
14921488
let data_dir = nodes[0].kv_store.get_data_dir();
14931489
let persister = Arc::new(Persister::new(data_dir));
14941490
let event_handler = |_: _| {};
1495-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1491+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
14961492
loop {
14971493
let log_entries = nodes[0].logger.lines.lock().unwrap();
14981494
let desired_log_1 = "Calling ChannelManager's timer_tick_occurred".to_string();
@@ -1521,7 +1517,7 @@ mod tests {
15211517
let data_dir = nodes[0].kv_store.get_data_dir();
15221518
let persister = Arc::new(Persister::new(data_dir).with_manager_error(std::io::ErrorKind::Other, "test"));
15231519
let event_handler = |_: _| {};
1524-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1520+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
15251521
match bg_processor.join() {
15261522
Ok(_) => panic!("Expected error persisting manager"),
15271523
Err(e) => {
@@ -1542,7 +1538,7 @@ mod tests {
15421538
let persister = Arc::new(Persister::new(data_dir).with_manager_error(std::io::ErrorKind::Other, "test"));
15431539

15441540
let bp_future = super::process_events_async(
1545-
persister, |_: _| {async {}}, nodes[0].chain_monitor.clone(), nodes[0].node.clone(),
1541+
persister, |_: _| {async {}}, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()),
15461542
nodes[0].rapid_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(),
15471543
Some(nodes[0].scorer.clone()), move |dur: Duration| {
15481544
Box::pin(async move {
@@ -1567,7 +1563,7 @@ mod tests {
15671563
let data_dir = nodes[0].kv_store.get_data_dir();
15681564
let persister = Arc::new(Persister::new(data_dir).with_graph_error(std::io::ErrorKind::Other, "test"));
15691565
let event_handler = |_: _| {};
1570-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].p2p_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1566+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].p2p_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
15711567

15721568
match bg_processor.stop() {
15731569
Ok(_) => panic!("Expected error persisting network graph"),
@@ -1585,7 +1581,7 @@ mod tests {
15851581
let data_dir = nodes[0].kv_store.get_data_dir();
15861582
let persister = Arc::new(Persister::new(data_dir).with_scorer_error(std::io::ErrorKind::Other, "test"));
15871583
let event_handler = |_: _| {};
1588-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1584+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
15891585

15901586
match bg_processor.stop() {
15911587
Ok(_) => panic!("Expected error persisting scorer"),
@@ -1613,7 +1609,7 @@ mod tests {
16131609
_ => panic!("Unexpected event: {:?}", event),
16141610
};
16151611

1616-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1612+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
16171613

16181614
// Open a channel and check that the FundingGenerationReady event was handled.
16191615
begin_open_channel!(nodes[0], nodes[1], channel_value);
@@ -1653,7 +1649,7 @@ mod tests {
16531649
_ => panic!("Unexpected event: {:?}", event),
16541650
};
16551651
let persister = Arc::new(Persister::new(data_dir));
1656-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1652+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
16571653

16581654
// Force close the channel and check that the SpendableOutputs event was handled.
16591655
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id()).unwrap();
@@ -1764,7 +1760,7 @@ mod tests {
17641760
let data_dir = nodes[0].kv_store.get_data_dir();
17651761
let persister = Arc::new(Persister::new(data_dir));
17661762
let event_handler = |_: _| {};
1767-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1763+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
17681764

17691765
loop {
17701766
let log_entries = nodes[0].logger.lines.lock().unwrap();
@@ -1837,7 +1833,7 @@ mod tests {
18371833
let persister = Arc::new(Persister::new(data_dir).with_graph_persistence_notifier(sender));
18381834

18391835
let event_handler = |_: _| {};
1840-
let background_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].rapid_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1836+
let background_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].rapid_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
18411837

18421838
do_test_not_pruning_network_graph_until_graph_sync_completion!(nodes,
18431839
receiver.recv_timeout(Duration::from_secs(super::FIRST_NETWORK_PRUNE_TIMER * 5)),
@@ -1995,7 +1991,7 @@ mod tests {
19951991
let (_, nodes) = create_nodes(1, "test_payment_path_scoring");
19961992
let data_dir = nodes[0].kv_store.get_data_dir();
19971993
let persister = Arc::new(Persister::new(data_dir));
1998-
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
1994+
let bg_processor = BackgroundProcessor::start(persister, event_handler, nodes[0].chain_monitor.clone(), nodes[0].node.clone(), Some(nodes[0].messenger.clone()), nodes[0].no_gossip_sync(), nodes[0].peer_manager.clone(), nodes[0].logger.clone(), Some(nodes[0].scorer.clone()));
19991995

20001996
do_test_payment_path_scoring!(nodes, receiver.recv_timeout(Duration::from_secs(EVENT_DEADLINE)));
20011997

0 commit comments

Comments
 (0)