Skip to content

Commit 00bfe53

Browse files
committed
Persist inbound channel coming through OpenChannelRequest
- Add `peer_store` and `peer_manager` to `[EventHandler::new]` function - Persist channel peer info in `[LdkEvent::OpenChannelRequest]` event
1 parent db1b7dc commit 00bfe53

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/event.rs

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1+
use crate::peer_store::{PeerInfo, PeerStore};
2+
use crate::types::PeerManager;
13
use crate::{
24
hex_utils, ChannelId, ChannelManager, Config, Error, KeysManager, NetworkGraph, UserChannelId,
3-
Wallet,
5+
Wallet, NetAddress,
46
};
57

68
use crate::payment_store::{
79
PaymentDetails, PaymentDetailsUpdate, PaymentDirection, PaymentStatus, PaymentStore,
810
};
911

1012
use crate::io::{KVStore, EVENT_QUEUE_PERSISTENCE_KEY, EVENT_QUEUE_PERSISTENCE_NAMESPACE};
11-
use crate::logger::{log_debug, log_error, log_info, Logger};
13+
use crate::logger::{log_debug, log_error, log_info, Logger, FilesystemLogger};
1214

1315
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
1416
use lightning::events::Event as LdkEvent;
@@ -232,6 +234,8 @@ where
232234
runtime: Arc<RwLock<Option<tokio::runtime::Runtime>>>,
233235
logger: L,
234236
config: Arc<Config>,
237+
peer_manager: Arc<PeerManager<K>>,
238+
peer_store: Arc<PeerStore<K, Arc<FilesystemLogger>>>,
235239
}
236240

237241
impl<K: KVStore + Sync + Send + 'static, L: Deref> EventHandler<K, L>
@@ -243,6 +247,8 @@ where
243247
channel_manager: Arc<ChannelManager<K>>, network_graph: Arc<NetworkGraph>,
244248
keys_manager: Arc<KeysManager>, payment_store: Arc<PaymentStore<K, L>>,
245249
runtime: Arc<RwLock<Option<tokio::runtime::Runtime>>>, logger: L, config: Arc<Config>,
250+
peer_manager: Arc<PeerManager<K>>,
251+
peer_store: Arc<PeerStore<K, Arc<FilesystemLogger>>>,
246252
) -> Self {
247253
Self {
248254
event_queue,
@@ -254,6 +260,8 @@ where
254260
logger,
255261
runtime,
256262
config,
263+
peer_manager,
264+
peer_store
257265
}
258266
}
259267

@@ -619,6 +627,25 @@ where
619627
if allow_0conf { " trusted" } else { "" },
620628
counterparty_node_id,
621629
);
630+
// Persist channel
631+
let peer_node_ids = self.peer_manager.get_peer_node_ids();
632+
if let Some(peer) = peer_node_ids.iter().find(|(node_id, _)| node_id == &counterparty_node_id) {
633+
let address = match peer.1.clone() {
634+
Some(address) => address,
635+
None => {
636+
log_error!(self.logger, "Failed to add peer to peer store: no network address found");
637+
return;
638+
}
639+
};
640+
let peer = PeerInfo { node_id: counterparty_node_id, address: NetAddress(address) };
641+
if let Err(e) = self.peer_store.add_peer(peer) {
642+
log_error!(self.logger, "Failed to add peer to peer store: {}", e);
643+
};
644+
log_info!(
645+
self.logger,
646+
"Persisted inbound channel from peer {}", counterparty_node_id
647+
);
648+
}
622649
}
623650
Err(e) => {
624651
log_error!(

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,8 @@ impl<K: KVStore + Sync + Send + 'static> Node<K> {
655655
Arc::clone(&self.runtime),
656656
Arc::clone(&self.logger),
657657
Arc::clone(&self.config),
658+
Arc::clone(&self.peer_manager),
659+
Arc::clone(&self.peer_store),
658660
));
659661

660662
// Setup background processing

0 commit comments

Comments
 (0)