@@ -1060,37 +1060,46 @@ async fn start_ldk() {
10601060 // Regularly reconnect to channel peers.
10611061 let connect_cm = Arc :: clone ( & channel_manager) ;
10621062 let connect_pm = Arc :: clone ( & peer_manager) ;
1063- let peer_data_path = format ! ( "{}/channel_peer_data" , ldk_data_dir) ;
10641063 let stop_connect = Arc :: clone ( & stop_listen_connect) ;
1064+ let graph_connect = Arc :: clone ( & network_graph) ;
10651065 tokio:: spawn ( async move {
10661066 let mut interval = tokio:: time:: interval ( Duration :: from_secs ( 1 ) ) ;
10671067 interval. set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Delay ) ;
10681068 loop {
10691069 interval. tick ( ) . await ;
1070- match disk:: read_channel_peer_data ( Path :: new ( & peer_data_path) ) {
1071- Ok ( info) => {
1072- for node_id in connect_cm
1073- . list_channels ( )
1074- . iter ( )
1075- . map ( |chan| chan. counterparty . node_id )
1076- . filter ( |id| connect_pm. peer_by_node_id ( id) . is_none ( ) )
1077- {
1078- if stop_connect. load ( Ordering :: Acquire ) {
1079- return ;
1080- }
1081- for ( pubkey, peer_addr) in info. iter ( ) {
1082- if * pubkey == node_id {
1083- let _ = cli:: do_connect_peer (
1084- * pubkey,
1085- peer_addr. clone ( ) ,
1086- Arc :: clone ( & connect_pm) ,
1087- )
1088- . await ;
1070+ for node_id in connect_cm
1071+ . list_channels ( )
1072+ . iter ( )
1073+ . map ( |chan| chan. counterparty . node_id )
1074+ . filter ( |id| connect_pm. peer_by_node_id ( id) . is_none ( ) )
1075+ {
1076+ if stop_connect. load ( Ordering :: Acquire ) {
1077+ return ;
1078+ }
1079+ let id = NodeId :: from_pubkey ( & node_id) ;
1080+ let addrs = if let Some ( node) = graph_connect. read_only ( ) . node ( & id) {
1081+ if let Some ( ann) = & node. announcement_info {
1082+ ann. addresses ( ) . iter ( ) . filter_map ( |addr| {
1083+ match addr {
1084+ lightning:: ln:: msgs:: SocketAddress :: OnionV2 ( _) => None ,
1085+ lightning:: ln:: msgs:: SocketAddress :: OnionV3 { .. } => None ,
1086+ _ => Some ( addr. clone ( ) ) ,
10891087 }
1090- }
1088+ } ) . collect :: < Vec < _ > > ( )
1089+ } else {
1090+ Vec :: new ( )
10911091 }
1092- } ,
1093- Err ( e) => println ! ( "ERROR: errored reading channel peer info from disk: {:?}" , e) ,
1092+ } else {
1093+ Vec :: new ( )
1094+ } ;
1095+ for addr in addrs {
1096+ let sockaddrs = addr. to_socket_addrs ( ) ;
1097+ if sockaddrs. is_err ( ) { continue ; }
1098+ for sockaddr in sockaddrs. unwrap ( ) {
1099+ let _ =
1100+ cli:: do_connect_peer ( node_id, sockaddr, Arc :: clone ( & connect_pm) ) . await ;
1101+ }
1102+ }
10941103 }
10951104 }
10961105 } ) ;
@@ -1142,7 +1151,6 @@ async fn start_ldk() {
11421151 network_graph,
11431152 inbound_payments,
11441153 outbound_payments,
1145- ldk_data_dir,
11461154 cli_persister,
11471155 )
11481156 ) ;
0 commit comments