From 32bf949dc8162f340c60136477acd6b46298b5f9 Mon Sep 17 00:00:00 2001 From: Jade Date: Tue, 8 Feb 2022 18:37:16 -0500 Subject: [PATCH 1/2] Propagate phy::RawSocket send error to caller --- src/phy/raw_socket.rs | 7 ++++++- src/phy/sys/raw_socket.rs | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/phy/raw_socket.rs b/src/phy/raw_socket.rs index e01438f46..685fdb42a 100644 --- a/src/phy/raw_socket.rs +++ b/src/phy/raw_socket.rs @@ -111,7 +111,12 @@ impl phy::TxToken for TxToken { let mut lower = self.lower.borrow_mut(); let mut buffer = vec![0; len]; let result = f(&mut buffer); - lower.send(&buffer[..]).unwrap(); + if let Err(err) = lower.send(&buffer[..]) { + return match err.kind() { + io::ErrorKind::WouldBlock => Err(crate::Error::Exhausted), + _ => Err(crate::Error::Illegal), + }; + } result } } diff --git a/src/phy/sys/raw_socket.rs b/src/phy/sys/raw_socket.rs index 2161b3d38..f9654d509 100644 --- a/src/phy/sys/raw_socket.rs +++ b/src/phy/sys/raw_socket.rs @@ -104,7 +104,7 @@ impl RawSocketDesc { 0, ); if len == -1 { - Err(io::Error::last_os_error()).unwrap() + return Err(io::Error::last_os_error()); } Ok(len as usize) } From 32974f8136c9d16d34863ccd0ca5e285d05f22ec Mon Sep 17 00:00:00 2001 From: Jade Date: Tue, 8 Feb 2022 19:57:41 -0500 Subject: [PATCH 2/2] Changed behavior of phy::RawSocket TxToken::consume to be more similar to RawSocket::receive --- src/phy/raw_socket.rs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/phy/raw_socket.rs b/src/phy/raw_socket.rs index 685fdb42a..49e7470a1 100644 --- a/src/phy/raw_socket.rs +++ b/src/phy/raw_socket.rs @@ -111,12 +111,10 @@ impl phy::TxToken for TxToken { let mut lower = self.lower.borrow_mut(); let mut buffer = vec![0; len]; let result = f(&mut buffer); - if let Err(err) = lower.send(&buffer[..]) { - return match err.kind() { - io::ErrorKind::WouldBlock => Err(crate::Error::Exhausted), - _ => Err(crate::Error::Illegal), - }; + match lower.send(&buffer[..]) { + Ok(_) => result, + Err(err) if err.kind() == io::ErrorKind::WouldBlock => Err(crate::Error::Exhausted), + Err(err) => panic!("{}", err), } - result } }