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 {
break if let Some(cause) = err { Some(t) if t < slept => {
cause break if let Some(cause) = err {
} else { cause
Err(FidoErrorKind::Timeout.into()) } else {
}; 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;