From f5ee550b2c0f927693d958f08bee91d5f6481509 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Wed, 6 Sep 2023 10:30:45 +0200 Subject: [PATCH] Handle rusb device descriptor errors without panic --- src/lib.rs | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 3b14540..19d0222 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -54,13 +54,32 @@ impl UsbIpServer { let open_device = match dev.open() { Ok(dev) => dev, Err(err) => { - warn!("Impossible to share {:?}: {}", dev, err); + warn!("Impossible to share {:?}: {}, ignoring device", dev, err); continue; } }; + let desc = match dev.device_descriptor() { + Ok(desc) => desc, + Err(err) => { + warn!( + "Impossible to get device descriptor for {:?}: {}, ignoring device", + dev, err + ); + continue; + } + }; + let cfg = match dev.active_config_descriptor() { + Ok(desc) => desc, + Err(err) => { + warn!( + "Impossible to get config descriptor for {:?}: {}, ignoring device", + dev, err + ); + continue; + } + }; + let handle = Arc::new(Mutex::new(open_device)); - let desc = dev.device_descriptor().unwrap(); - let cfg = dev.active_config_descriptor().unwrap(); let mut interfaces = vec![]; handle .lock()