From 65b92f363917ba506f8bbe897ce12dae322a25ca Mon Sep 17 00:00:00 2001 From: Julius Michaelis Date: Fri, 11 Oct 2024 20:25:11 +0900 Subject: [PATCH] Improve recovery from netlink errors --- src/netlink/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/netlink/mod.rs b/src/netlink/mod.rs index d01dcd5..41a33e5 100644 --- a/src/netlink/mod.rs +++ b/src/netlink/mod.rs @@ -21,15 +21,18 @@ where let mut buf = vec![0; packet.header.length as usize]; assert!(buf.len() == packet.buffer_len()); packet.serialize(&mut buf[..]); - socket.send(&buf[..], 0).unwrap(); + socket.send(&buf[..], 0).context("Netlink send error")?; let mut receive_buffer = vec![0; 4096]; let mut offset = 0; loop { - let size = socket.recv(&mut &mut receive_buffer[..], 0).unwrap(); + let size = socket + .recv(&mut &mut receive_buffer[..], 0) + .context("Netlink receive failure")?; loop { let bytes = &receive_buffer[offset..]; - let rx_packet: NetlinkMessage = NetlinkMessage::deserialize(bytes).unwrap(); + let rx_packet: NetlinkMessage = NetlinkMessage::deserialize(bytes) + .context("Netlink message format not recognized")?; match rx_packet.payload { NetlinkPayload::Done(_) => return Ok(()), NetlinkPayload::InnerMessage(inner) => recv(inner),