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