@@ -1060,37 +1060,46 @@ async fn start_ldk() {
1060
1060
// Regularly reconnect to channel peers.
1061
1061
let connect_cm = Arc :: clone ( & channel_manager) ;
1062
1062
let connect_pm = Arc :: clone ( & peer_manager) ;
1063
- let peer_data_path = format ! ( "{}/channel_peer_data" , ldk_data_dir) ;
1064
1063
let stop_connect = Arc :: clone ( & stop_listen_connect) ;
1064
+ let graph_connect = Arc :: clone ( & network_graph) ;
1065
1065
tokio:: spawn ( async move {
1066
1066
let mut interval = tokio:: time:: interval ( Duration :: from_secs ( 1 ) ) ;
1067
1067
interval. set_missed_tick_behavior ( tokio:: time:: MissedTickBehavior :: Delay ) ;
1068
1068
loop {
1069
1069
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 ( ) ) ,
1089
1087
}
1090
- }
1088
+ } ) . collect :: < Vec < _ > > ( )
1089
+ } else {
1090
+ Vec :: new ( )
1091
1091
}
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
+ }
1094
1103
}
1095
1104
}
1096
1105
} ) ;
@@ -1142,7 +1151,6 @@ async fn start_ldk() {
1142
1151
network_graph,
1143
1152
inbound_payments,
1144
1153
outbound_payments,
1145
- ldk_data_dir,
1146
1154
cli_persister,
1147
1155
)
1148
1156
) ;
0 commit comments