@@ -51,6 +51,7 @@ use std::fs;
51
51
use std:: fs:: File ;
52
52
use std:: io;
53
53
use std:: io:: Write ;
54
+ use std:: net:: ToSocketAddrs ;
54
55
use std:: path:: Path ;
55
56
use std:: sync:: atomic:: { AtomicBool , Ordering } ;
56
57
use std:: sync:: { Arc , Mutex , RwLock } ;
@@ -172,11 +173,11 @@ pub(crate) type BumpTxEventHandler = BumpTransactionEventHandler<
172
173
> ;
173
174
174
175
async fn handle_ldk_events (
175
- channel_manager : & Arc < ChannelManager > , bitcoind_client : & BitcoindClient ,
176
+ channel_manager : Arc < ChannelManager > , bitcoind_client : & BitcoindClient ,
176
177
network_graph : & NetworkGraph , keys_manager : & KeysManager ,
177
- bump_tx_event_handler : & BumpTxEventHandler ,
178
+ bump_tx_event_handler : & BumpTxEventHandler , peer_manager : Arc < PeerManager > ,
178
179
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 > ,
180
181
network : Network , event : Event ,
181
182
) {
182
183
match event {
@@ -512,7 +513,20 @@ async fn handle_ldk_events(
512
513
}
513
514
Event :: HTLCIntercepted { .. } => { }
514
515
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
+ }
516
530
}
517
531
}
518
532
@@ -886,6 +900,7 @@ async fn start_ldk() {
886
900
let inbound_payments_event_listener = Arc :: clone ( & inbound_payments) ;
887
901
let outbound_payments_event_listener = Arc :: clone ( & outbound_payments) ;
888
902
let fs_store_event_listener = Arc :: clone ( & fs_store) ;
903
+ let peer_manager_event_listener = Arc :: clone ( & peer_manager) ;
889
904
let network = args. network ;
890
905
let event_handler = move |event : Event | {
891
906
let channel_manager_event_listener = Arc :: clone ( & channel_manager_event_listener) ;
@@ -896,16 +911,18 @@ async fn start_ldk() {
896
911
let inbound_payments_event_listener = Arc :: clone ( & inbound_payments_event_listener) ;
897
912
let outbound_payments_event_listener = Arc :: clone ( & outbound_payments_event_listener) ;
898
913
let fs_store_event_listener = Arc :: clone ( & fs_store_event_listener) ;
914
+ let peer_manager_event_listener = Arc :: clone ( & peer_manager_event_listener) ;
899
915
async move {
900
916
handle_ldk_events (
901
- & channel_manager_event_listener,
917
+ channel_manager_event_listener,
902
918
& bitcoind_client_event_listener,
903
919
& network_graph_event_listener,
904
920
& keys_manager_event_listener,
905
921
& bump_tx_event_handler,
922
+ peer_manager_event_listener,
906
923
inbound_payments_event_listener,
907
924
outbound_payments_event_listener,
908
- & fs_store_event_listener,
925
+ fs_store_event_listener,
909
926
network,
910
927
event,
911
928
)
0 commit comments