fix timeout = None causing an instant timeout err

This commit is contained in:
shimun 2020-04-05 19:47:28 +02:00
parent addc251418
commit c4cd7cdc79
Signed by: shimun
GPG Key ID: E81D8382DC2F971B

View File

@ -33,25 +33,23 @@ pub fn request_multiple_devices<
let interval = Duration::from_millis(10); let interval = Duration::from_millis(10);
let mut received = 0usize; let mut received = 0usize;
let res = loop { let res = loop {
if timeout.map(|t| t < slept).unwrap_or(true) { match timeout {
Some(t) if t < slept => {
break if let Some(cause) = err { break if let Some(cause) = err {
cause cause
} else { } else {
Err(FidoErrorKind::Timeout.into()) Err(FidoErrorKind::Timeout.into())
}; };
} }
if received == handles.len() { _ => (),
break err.unwrap();
} }
if timeout.map(|t| t < slept).unwrap_or(true) {}
if let Ok(msg) = rx.recv_timeout(interval) { if let Ok(msg) = rx.recv_timeout(interval) {
received += 1; received += 1;
match msg { match msg {
e @ Err(_) => { e @ Err(_) if received == handles.len() => break e,
err = Some(e); e @ Err(_) => err = Some(e),
} res @ Ok(_) => break res,
res @ Ok(_) => {
break res;
}
} }
} else { } else {
slept += interval; slept += interval;