in src/vtok_agent/src/enclave.rs [153:172]
fn retry_rpc(&self, request: &schema::ApiRequest) -> Result<schema::ApiResponse, Error> {
let mut count = 1;
loop {
// Transport errors are non-recoverable.
let res = self.rpc(request)?;
if res.is_ok() || count == self.attestation_retry_count {
return Ok(res);
}
let sleep = Duration::from_millis((1 << (count - 1)) * 100);
warn!(
"RPC error (will retry in {}ms): {:?}",
sleep.as_millis(),
res
);
if let Err(util::SleepError::UserExit) = util::interruptible_sleep(sleep) {
return Ok(res);
}
count += 1;
}
}