projects
/
ldk-sample
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge pull request #51 from jkczyz/2022-03-ldk-106
[ldk-sample]
/
src
/
main.rs
diff --git
a/src/main.rs
b/src/main.rs
index 07afa66436164c15b0b5af0e018fc8135549d917..f48a11897b825457a4a3faf1bc7fbd471bb0875e 100644
(file)
--- a/
src/main.rs
+++ b/
src/main.rs
@@
-48,6
+48,7
@@
use std::io;
use std::io::Write;
use std::ops::Deref;
use std::path::Path;
use std::io::Write;
use std::ops::Deref;
use std::path::Path;
+use std::sync::atomic::{AtomicBool, Ordering};
use std::sync::{Arc, Mutex};
use std::time::{Duration, SystemTime};
use std::sync::{Arc, Mutex};
use std::time::{Duration, SystemTime};
@@
-542,6
+543,8
@@
async fn start_ldk() {
let peer_manager_connection_handler = peer_manager.clone();
let listening_port = args.ldk_peer_listening_port;
let peer_manager_connection_handler = peer_manager.clone();
let listening_port = args.ldk_peer_listening_port;
+ let stop_listen = Arc::new(AtomicBool::new(false));
+ let stop_listen_ref = Arc::clone(&stop_listen);
tokio::spawn(async move {
let listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{}", listening_port))
.await
tokio::spawn(async move {
let listener = tokio::net::TcpListener::bind(format!("0.0.0.0:{}", listening_port))
.await
@@
-549,6
+552,9
@@
async fn start_ldk() {
loop {
let peer_mgr = peer_manager_connection_handler.clone();
let tcp_stream = listener.accept().await.unwrap().0;
loop {
let peer_mgr = peer_manager_connection_handler.clone();
let tcp_stream = listener.accept().await.unwrap().0;
+ if stop_listen_ref.load(Ordering::Acquire) {
+ return;
+ }
tokio::spawn(async move {
lightning_net_tokio::setup_inbound(
peer_mgr.clone(),
tokio::spawn(async move {
lightning_net_tokio::setup_inbound(
peer_mgr.clone(),
@@
-709,10
+715,11
@@
async fn start_ldk() {
// Start the CLI.
cli::poll_for_user_input(
// Start the CLI.
cli::poll_for_user_input(
- invoice_payer.clone(),
- peer_manager.clone(),
- channel_manager.clone(),
- keys_manager.clone(),
+ Arc::clone(&invoice_payer),
+ Arc::clone(&peer_manager),
+ Arc::clone(&channel_manager),
+ Arc::clone(&keys_manager),
+ Arc::clone(&network_graph),
inbound_payments,
outbound_payments,
ldk_data_dir.clone(),
inbound_payments,
outbound_payments,
ldk_data_dir.clone(),
@@
-720,6
+727,11
@@
async fn start_ldk() {
)
.await;
)
.await;
+ // Disconnect our peers and stop accepting new connections. This ensures we don't continue
+ // updating our channel data after we've stopped the background processor.
+ stop_listen.store(true, Ordering::Release);
+ peer_manager.disconnect_all_peers();
+
// Stop the background processor.
background_processor.stop().unwrap();
}
// Stop the background processor.
background_processor.stop().unwrap();
}