diff --git a/mavlink-core/src/connection/udp.rs b/mavlink-core/src/connection/udp.rs index 208a4047ff40710ed55c7f22aa206f0be6ae8dcf..7cb92a78149d3abb51026dcb48dcc2760e2466da 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> {