fn retry_rpc()

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;
        }
    }