Skip to content

Commit d6f04e0

Browse files
committed
Handle Event::ConnectionNeeded for onion message sending
1 parent f0eb724 commit d6f04e0

File tree

1 file changed

+23
-6
lines changed

1 file changed

+23
-6
lines changed

src/main.rs

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ use std::fs;
5151
use std::fs::File;
5252
use std::io;
5353
use std::io::Write;
54+
use std::net::ToSocketAddrs;
5455
use std::path::Path;
5556
use std::sync::atomic::{AtomicBool, Ordering};
5657
use std::sync::{Arc, Mutex, RwLock};
@@ -172,11 +173,11 @@ pub(crate) type BumpTxEventHandler = BumpTransactionEventHandler<
172173
>;
173174

174175
async fn handle_ldk_events(
175-
channel_manager: &Arc<ChannelManager>, bitcoind_client: &BitcoindClient,
176+
channel_manager: Arc<ChannelManager>, bitcoind_client: &BitcoindClient,
176177
network_graph: &NetworkGraph, keys_manager: &KeysManager,
177-
bump_tx_event_handler: &BumpTxEventHandler,
178+
bump_tx_event_handler: &BumpTxEventHandler, peer_manager: Arc<PeerManager>,
178179
inbound_payments: Arc<Mutex<InboundPaymentInfoStorage>>,
179-
outbound_payments: Arc<Mutex<OutboundPaymentInfoStorage>>, fs_store: &Arc<FilesystemStore>,
180+
outbound_payments: Arc<Mutex<OutboundPaymentInfoStorage>>, fs_store: Arc<FilesystemStore>,
180181
network: Network, event: Event,
181182
) {
182183
match event {
@@ -512,7 +513,20 @@ async fn handle_ldk_events(
512513
}
513514
Event::HTLCIntercepted { .. } => {}
514515
Event::BumpTransaction(event) => bump_tx_event_handler.handle_event(&event),
515-
Event::ConnectionNeeded { .. } => {}
516+
Event::ConnectionNeeded { node_id, addresses } => {
517+
tokio::spawn(async move {
518+
for address in addresses {
519+
if let Ok(sockaddrs) = address.to_socket_addrs() {
520+
for addr in sockaddrs {
521+
let pm = Arc::clone(&peer_manager);
522+
if cli::connect_peer_if_necessary(node_id, addr, pm).await.is_ok() {
523+
return;
524+
}
525+
}
526+
}
527+
}
528+
});
529+
}
516530
}
517531
}
518532

@@ -886,6 +900,7 @@ async fn start_ldk() {
886900
let inbound_payments_event_listener = Arc::clone(&inbound_payments);
887901
let outbound_payments_event_listener = Arc::clone(&outbound_payments);
888902
let fs_store_event_listener = Arc::clone(&fs_store);
903+
let peer_manager_event_listener = Arc::clone(&peer_manager);
889904
let network = args.network;
890905
let event_handler = move |event: Event| {
891906
let channel_manager_event_listener = Arc::clone(&channel_manager_event_listener);
@@ -896,16 +911,18 @@ async fn start_ldk() {
896911
let inbound_payments_event_listener = Arc::clone(&inbound_payments_event_listener);
897912
let outbound_payments_event_listener = Arc::clone(&outbound_payments_event_listener);
898913
let fs_store_event_listener = Arc::clone(&fs_store_event_listener);
914+
let peer_manager_event_listener = Arc::clone(&peer_manager_event_listener);
899915
async move {
900916
handle_ldk_events(
901-
&channel_manager_event_listener,
917+
channel_manager_event_listener,
902918
&bitcoind_client_event_listener,
903919
&network_graph_event_listener,
904920
&keys_manager_event_listener,
905921
&bump_tx_event_handler,
922+
peer_manager_event_listener,
906923
inbound_payments_event_listener,
907924
outbound_payments_event_listener,
908-
&fs_store_event_listener,
925+
fs_store_event_listener,
909926
network,
910927
event,
911928
)

0 commit comments

Comments
 (0)