From 5a066fbc6cd9a43126b0b47015fb968cbbefeed4 Mon Sep 17 00:00:00 2001 From: whitequark Date: Wed, 30 Aug 2017 10:20:11 +0000 Subject: [PATCH] Return from EthernetInterface::poll() on errors, don't swallow them. We still print them into our debug log though, because it has more context; the caller may opt to ignore any poll errors and only use the smoltcp debug log as a, well, debugging aid, or it could print user-visible warnings to alert the user to unusual network conditions. --- src/iface/ethernet.rs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/iface/ethernet.rs b/src/iface/ethernet.rs index e4bc6b3..26e5c48 100644 --- a/src/iface/ethernet.rs +++ b/src/iface/ethernet.rs @@ -142,7 +142,7 @@ impl<'a, 'b, 'c, DeviceT: Device + 'a> Interface<'a, 'b, 'c, DeviceT> { Ok(response) => response, Err(err) => { net_debug!("cannot process ingress packet: {}", err); - continue + return Err(err) } }; processed_any = true; @@ -151,7 +151,7 @@ impl<'a, 'b, 'c, DeviceT: Device + 'a> Interface<'a, 'b, 'c, DeviceT> { Ok(()) => (), Err(err) => { net_debug!("cannot dispatch response packet: {}", err); - continue + return Err(err) } } } @@ -185,8 +185,10 @@ impl<'a, 'b, 'c, DeviceT: Device + 'a> Interface<'a, 'b, 'c, DeviceT> { }; match (device_result, socket_result) { (Ok(()), Err(Error::Exhausted)) => (), // nothing to transmit - (Err(err), _) | (_, Err(err)) => - net_debug!("cannot dispatch egress packet: {}", err), + (Err(err), _) | (_, Err(err)) => { + net_debug!("cannot dispatch egress packet: {}", err); + return Err(err) + } (Ok(()), Ok(())) => () } }