From 50b4e6471eef5400158071b156b4a3faeba29063 Mon Sep 17 00:00:00 2001 From: Aram Drevekenin Date: Thu, 17 Oct 2019 17:57:55 +0200 Subject: fix(linux): better error when not enough permissions --- src/os/linux.rs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/os/linux.rs b/src/os/linux.rs index 642de38..cc2d883 100644 --- a/src/os/linux.rs +++ b/src/os/linux.rs @@ -27,14 +27,14 @@ impl Iterator for KeyboardEvents { } } -fn get_datalink_channel(interface: &NetworkInterface) -> Box { +fn get_datalink_channel(interface: &NetworkInterface) -> Result, failure::Error> { let mut config = Config::default(); config.read_timeout = Some(time::Duration::new(0, 1)); match datalink::channel(interface, config) { - Ok(Ethernet(_tx, rx)) => rx, - Ok(_) => panic!("Unhandled channel type"), - Err(e) => panic!( - "An error occurred when creating the datalink channel: {}", + Ok(Ethernet(_tx, rx)) => Ok(rx), + Ok(_) => failure::bail!("Unknown interface type"), + Err(e) => failure::bail!( + "Failed to listen to network interface: {}", e ), } @@ -118,7 +118,7 @@ pub fn get_input(opt: Opt) -> Result { failure::bail!("Cannot find interface {}", opt.interface); } }; - let network_frames = get_datalink_channel(&network_interface); + let network_frames = get_datalink_channel(&network_interface)?; let lookup_addr = Box::new(lookup_addr); let (on_winch, cleanup) = sigwinch(); -- cgit v1.2.3