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 80c175077f
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 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;