From: Matt Corallo Date: Sat, 1 Feb 2020 01:57:01 +0000 (-0500) Subject: Swap read_event read type for a slice isntead of a Vec X-Git-Tag: v0.0.12~106^2~4 X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=6f06858304c49742ad80216dd693e65f5c18ecbe;p=rust-lightning Swap read_event read type for a slice isntead of a Vec It looks like we don't currently use the Vec as a Vec, and can happily take a slice, which makes things easier on the calling side. --- diff --git a/fuzz/src/full_stack.rs b/fuzz/src/full_stack.rs index ab63162f5..3879d0b1d 100644 --- a/fuzz/src/full_stack.rs +++ b/fuzz/src/full_stack.rs @@ -384,7 +384,7 @@ pub fn do_test(data: &[u8], logger: &Arc) { 3 => { let peer_id = get_slice!(1)[0]; if !peers.borrow()[peer_id as usize] { return; } - match loss_detector.handler.read_event(&mut Peer{id: peer_id, peers_connected: &peers}, get_slice!(get_slice!(1)[0]).to_vec()) { + match loss_detector.handler.read_event(&mut Peer{id: peer_id, peers_connected: &peers}, get_slice!(get_slice!(1)[0])) { Ok(res) => assert!(!res), Err(_) => { peers.borrow_mut()[peer_id as usize] = false; } } diff --git a/lightning-net-tokio/src/lib.rs b/lightning-net-tokio/src/lib.rs index c2bac324b..d4621e000 100644 --- a/lightning-net-tokio/src/lib.rs +++ b/lightning-net-tokio/src/lib.rs @@ -62,7 +62,7 @@ impl Connection { //TODO: There's a race where we don't meet the requirements of socket_disconnected if its //called right here, after we release the us_ref lock in the scope above, but before we //call read_event! - match peer_manager.read_event(&mut SocketDescriptor::new(us_ref.clone(), peer_manager.clone()), pending_read) { + match peer_manager.read_event(&mut SocketDescriptor::new(us_ref.clone(), peer_manager.clone()), &pending_read) { Ok(pause_read) => { if pause_read { let mut lock = us_ref.lock().unwrap(); @@ -181,7 +181,7 @@ impl peer_handler::SocketDescriptor for SocketDescri } if !read_data.is_empty() { let mut us_clone = $us_ref.clone(); - match $us_ref.peer_manager.read_event(&mut us_clone, read_data) { + match $us_ref.peer_manager.read_event(&mut us_clone, &read_data) { Ok(pause_read) => { if pause_read { return Ok(()); } }, diff --git a/lightning/src/ln/peer_handler.rs b/lightning/src/ln/peer_handler.rs index 9cbd02121..12cf937bc 100644 --- a/lightning/src/ln/peer_handler.rs +++ b/lightning/src/ln/peer_handler.rs @@ -445,7 +445,7 @@ impl PeerManager where /// on this file descriptor has resume_read set (preventing DoS issues in the send buffer). /// /// Panics if the descriptor was not previously registered in a new_*_connection event. - pub fn read_event(&self, peer_descriptor: &mut Descriptor, data: Vec) -> Result { + pub fn read_event(&self, peer_descriptor: &mut Descriptor, data: &[u8]) -> Result { match self.do_read_event(peer_descriptor, data) { Ok(res) => Ok(res), Err(e) => { @@ -455,7 +455,7 @@ impl PeerManager where } } - fn do_read_event(&self, peer_descriptor: &mut Descriptor, data: Vec) -> Result { + fn do_read_event(&self, peer_descriptor: &mut Descriptor, data: &[u8]) -> Result { let pause_read = { let mut peers_lock = self.peers.lock().unwrap(); let peers = &mut *peers_lock; @@ -1228,9 +1228,9 @@ mod tests { let mut fd_b = FileDescriptor { fd: 1, outbound_data: Arc::new(Mutex::new(Vec::new())) }; let initial_data = peer_b.new_outbound_connection(a_id, fd_b.clone()).unwrap(); peer_a.new_inbound_connection(fd_a.clone()).unwrap(); - assert_eq!(peer_a.read_event(&mut fd_a, initial_data).unwrap(), false); - assert_eq!(peer_b.read_event(&mut fd_b, fd_a.outbound_data.lock().unwrap().split_off(0)).unwrap(), false); - assert_eq!(peer_a.read_event(&mut fd_a, fd_b.outbound_data.lock().unwrap().split_off(0)).unwrap(), false); + assert_eq!(peer_a.read_event(&mut fd_a, &initial_data).unwrap(), false); + assert_eq!(peer_b.read_event(&mut fd_b, &fd_a.outbound_data.lock().unwrap().split_off(0)).unwrap(), false); + assert_eq!(peer_a.read_event(&mut fd_a, &fd_b.outbound_data.lock().unwrap().split_off(0)).unwrap(), false); } #[test]