]> git.bitcoin.ninja Git - rust-lightning/commitdiff
Fix the `establish_connection` utility method for a 2nd connection
authorMatt Corallo <git@bluematt.me>
Tue, 20 Aug 2024 02:13:55 +0000 (02:13 +0000)
committerMatt Corallo <git@bluematt.me>
Thu, 17 Oct 2024 19:09:15 +0000 (19:09 +0000)
The `establish_connection` method should work for more than one
connection per `PeerManager`, which we fix here.

lightning/src/ln/peer_handler.rs

index a2919aa947aa585266d05510adce4513a5f47bfc..5013e684a44cda84f2083f56f498efa0f021dd82 100644 (file)
@@ -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<FileDescriptor, &'a test_utils::TestChannelMessageHandler, &'a test_utils::TestRoutingMessageHandler, IgnoringMessageHandler, &'a test_utils::TestLogger, &'a TestCustomMessageHandler, &'a test_utils::TestNodeSigner>, peer_b: &PeerManager<FileDescriptor, &'a test_utils::TestChannelMessageHandler, &'a test_utils::TestRoutingMessageHandler, IgnoringMessageHandler, &'a test_utils::TestLogger, &'a TestCustomMessageHandler, &'a test_utils::TestNodeSigner>) -> (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);