From: Matt Corallo Date: Tue, 20 Aug 2024 02:13:55 +0000 (+0000) Subject: Fix the `establish_connection` utility method for a 2nd connection X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=bcad2571ac653b5471eefc3eb5cc5d65b5c0285a;p=rust-lightning Fix the `establish_connection` utility method for a 2nd connection The `establish_connection` method should work for more than one connection per `PeerManager`, which we fix here. --- diff --git a/lightning/src/ln/peer_handler.rs b/lightning/src/ln/peer_handler.rs index a2919aa94..5013e684a 100644 --- a/lightning/src/ln/peer_handler.rs +++ b/lightning/src/ln/peer_handler.rs @@ -2746,7 +2746,7 @@ mod tests { use crate::sync::{Arc, Mutex}; use core::convert::Infallible; - use core::sync::atomic::{AtomicBool, Ordering}; + use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; #[allow(unused_imports)] use crate::prelude::*; @@ -2898,20 +2898,25 @@ mod tests { } fn establish_connection<'a>(peer_a: &PeerManager, peer_b: &PeerManager) -> (FileDescriptor, FileDescriptor) { + static FD_COUNTER: AtomicUsize = AtomicUsize::new(0); + let fd = FD_COUNTER.fetch_add(1, Ordering::Relaxed) as u16; + let id_a = peer_a.node_signer.get_node_id(Recipient::Node).unwrap(); let mut fd_a = FileDescriptor { - fd: 1, outbound_data: Arc::new(Mutex::new(Vec::new())), + fd, outbound_data: Arc::new(Mutex::new(Vec::new())), disconnect: Arc::new(AtomicBool::new(false)), }; let addr_a = SocketAddress::TcpIpV4{addr: [127, 0, 0, 1], port: 1000}; + let id_b = peer_b.node_signer.get_node_id(Recipient::Node).unwrap(); let features_a = peer_a.init_features(id_b); let features_b = peer_b.init_features(id_a); let mut fd_b = FileDescriptor { - fd: 1, outbound_data: Arc::new(Mutex::new(Vec::new())), + fd, outbound_data: Arc::new(Mutex::new(Vec::new())), disconnect: Arc::new(AtomicBool::new(false)), }; let addr_b = SocketAddress::TcpIpV4{addr: [127, 0, 0, 1], port: 1001}; + let initial_data = peer_b.new_outbound_connection(id_a, fd_b.clone(), Some(addr_a.clone())).unwrap(); peer_a.new_inbound_connection(fd_a.clone(), Some(addr_b.clone())).unwrap(); assert_eq!(peer_a.read_event(&mut fd_a, &initial_data).unwrap(), false);