From 1b51a25d717993d39004152f215c33f4333e2056 Mon Sep 17 00:00:00 2001 From: Federico Lolli <federico123579@gmail.com> Date: Sun, 13 Apr 2025 14:19:37 +0200 Subject: [PATCH] fix: removed loop in UDP recv to return if timeout occurs --- mavlink-core/src/connection/udp.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/mavlink-core/src/connection/udp.rs b/mavlink-core/src/connection/udp.rs index 208a404..7cb92a7 100644 --- a/mavlink-core/src/connection/udp.rs +++ b/mavlink-core/src/connection/udp.rs @@ -83,24 +83,20 @@ impl<M: Message> MavConnection<M> for UdpConnection { fn recv(&self) -> Result<(MavHeader, M), crate::error::MessageReadError> { let mut reader = self.reader.lock().unwrap(); - loop { - #[cfg(not(feature = "signing"))] - let result = read_versioned_msg(reader.deref_mut(), self.protocol_version); - #[cfg(feature = "signing")] - let result = read_versioned_msg_signed( - reader.deref_mut(), - self.protocol_version, - self.signing_data.as_ref(), - ); - if self.server { - if let addr @ Some(_) = reader.reader_ref().last_recv_address { - self.writer.lock().unwrap().dest = addr; - } - } - if let ok @ Ok(..) = result { - return ok; + #[cfg(not(feature = "signing"))] + let result = read_versioned_msg(reader.deref_mut(), self.protocol_version); + #[cfg(feature = "signing")] + let result = read_versioned_msg_signed( + reader.deref_mut(), + self.protocol_version, + self.signing_data.as_ref(), + ); + if self.server { + if let addr @ Some(_) = reader.reader_ref().last_recv_address { + self.writer.lock().unwrap().dest = addr; } } + result } fn send(&self, header: &MavHeader, data: &M) -> Result<usize, crate::error::MessageWriteError> { -- GitLab