Broadcast node_announcements regularly.
[ldk-sample] / src / main.rs
index f51528b7b57832b3caf279b2f7fd856b6377de87..31fb84eeebeb8e79f19602b41b12fec47558bc1f 100644 (file)
@@ -577,6 +577,26 @@ async fn start_ldk() {
                Err(e) => println!("ERROR: errored reading channel peer info from disk: {:?}", e),
        }
 
+       // Regularly broadcast our node_announcement. This is only required (or possible) if we have
+       // some public channels, and is only useful if we have public listen address(es) to announce.
+       // In a production environment, this should occur only after the announcement of new channels
+       // to avoid churn in the global network graph.
+       let chan_manager = Arc::clone(&channel_manager);
+       let network = args.network;
+       if args.ldk_announced_listen_addr.is_some() {
+               tokio::spawn(async move {
+                       let mut interval = tokio::time::interval(Duration::from_secs(60));
+                       loop {
+                               interval.tick().await;
+                               chan_manager.broadcast_node_announcement(
+                                       [0; 3],
+                                       args.ldk_announced_node_name,
+                                       vec![args.ldk_announced_listen_addr.as_ref().unwrap().clone()],
+                               );
+                       }
+               });
+       }
+
        // Start the CLI.
        cli::poll_for_user_input(
                peer_manager.clone(),
@@ -588,7 +608,7 @@ async fn start_ldk() {
                event_ntfn_sender,
                ldk_data_dir.clone(),
                logger.clone(),
-               args.network,
+               network,
        )
        .await;
 }