From 08956fe84037721289c05c6d47ed199c14f13c83 Mon Sep 17 00:00:00 2001 From: vars1ty Date: Wed, 30 Aug 2023 13:29:19 +0200 Subject: [PATCH] make iov live longer --- src/adapters/udp.rs | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/adapters/udp.rs b/src/adapters/udp.rs index 35b4695..542c7ba 100644 --- a/src/adapters/udp.rs +++ b/src/adapters/udp.rs @@ -193,11 +193,11 @@ impl Remote for RemoteResource { } Err(ref err) if err.kind() == ErrorKind::ConnectionRefused => { // Avoid ICMP generated error to be logged - break ReadStatus::WaitNextEvent + break ReadStatus::WaitNextEvent; } Err(err) => { log::error!("UDP receive error: {}", err); - break ReadStatus::WaitNextEvent // Should not happen + break ReadStatus::WaitNextEvent; // Should not happen } } } @@ -236,9 +236,10 @@ impl LocalResource { let mut control_buffer = nix::cmsg_space!(libc::sockaddr_storage); loop { + let mut iov = [io::IoSliceMut::new(&mut input_buffer)]; let result = socket::recvmsg::( self.socket.as_raw_fd(), - &mut [io::IoSliceMut::new(&mut input_buffer)], + &mut iov, Some(&mut control_buffer), MsgFlags::empty(), ); @@ -261,15 +262,15 @@ impl LocalResource { }; if !ingress_addresses.contains(&ingress_ip) { - continue + continue; } fn convert_sockaddr(addr: SockaddrStorage) -> Option { if let Some(addr) = addr.as_sockaddr_in() { - return Some(SocketAddr::V4((*addr).into())) + return Some(SocketAddr::V4((*addr).into())); } if let Some(addr) = addr.as_sockaddr_in6() { - return Some(SocketAddr::V6((*addr).into())) + return Some(SocketAddr::V6((*addr).into())); } None } @@ -385,16 +386,14 @@ impl Local for LocalResource { Some(ingress_addresses) } } - } - else { + } else { None }; if let Some(multicast) = multicast { socket.join_multicast_v4(multicast.ip(), &Ipv4Addr::UNSPECIFIED)?; socket.bind(&SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, addr.port()).into())?; - } - else { + } else { socket.bind(&addr.into())?; } @@ -416,7 +415,7 @@ impl Local for LocalResource { #[cfg(target_os = "linux")] if let Some(ingress_addresses) = &self.ingress_addresses { self.accept_filtered(ingress_addresses, accept_remote); - return + return; } let buffer: MaybeUninit<[u8; MAX_LOCAL_PAYLOAD_LEN]> = MaybeUninit::uninit(); @@ -463,7 +462,7 @@ fn send_packet(data: &[u8], send_method: impl Fn(&[u8]) -> io::Result) -> } Err(err) => { log::error!("UDP send error: {}", err); - break SendStatus::ResourceNotFound // should not happen + break SendStatus::ResourceNotFound; // should not happen } } }