From c4cd7cdc79709eb34da6cb9884329620ae32c286 Mon Sep 17 00:00:00 2001 From: shimun Date: Sun, 5 Apr 2020 19:47:28 +0200 Subject: [PATCH] fix timeout = None causing an instant timeout err --- src/util.rs | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/src/util.rs b/src/util.rs index 750b27e..ba0ae75 100644 --- a/src/util.rs +++ b/src/util.rs @@ -33,25 +33,23 @@ pub fn request_multiple_devices< let interval = Duration::from_millis(10); let mut received = 0usize; let res = loop { - if timeout.map(|t| t < slept).unwrap_or(true) { - break if let Some(cause) = err { - cause - } else { - Err(FidoErrorKind::Timeout.into()) - }; - } - if received == handles.len() { - break err.unwrap(); + match timeout { + Some(t) if t < slept => { + break if let Some(cause) = err { + cause + } else { + Err(FidoErrorKind::Timeout.into()) + }; + } + _ => (), } + if timeout.map(|t| t < slept).unwrap_or(true) {} if let Ok(msg) = rx.recv_timeout(interval) { received += 1; match msg { - e @ Err(_) => { - err = Some(e); - } - res @ Ok(_) => { - break res; - } + e @ Err(_) if received == handles.len() => break e, + e @ Err(_) => err = Some(e), + res @ Ok(_) => break res, } } else { slept += interval;