aboutsummaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
authorGravatar Yujia Qiao <rapiz3142@gmail.com> 2022-11-29 17:41:23 +0800
committerGravatar GitHub <noreply@github.com> 2022-11-29 09:41:23 +0000
commitd216d6380fd46eb853d2211a8da6b1276bf35f11 (patch)
treed87c690e29437a503a17e3560479c749dce419d8 /src/client.rs
parent87d06c91b944262d26798275865cf545c282f058 (diff)
downloadrathole-d216d6380fd46eb853d2211a8da6b1276bf35f11.tar.gz
rathole-d216d6380fd46eb853d2211a8da6b1276bf35f11.tar.zst
rathole-d216d6380fd46eb853d2211a8da6b1276bf35f11.zip
feat: configurable retry interval (#208)
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/client.rs b/src/client.rs
index 45d3d85..21dbc2b 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -494,6 +494,9 @@ impl ControlChannelHandle {
info!("Starting {}", hex::encode(digest));
let (shutdown_tx, shutdown_rx) = oneshot::channel();
+
+ let mut retry_backoff = run_control_chan_backoff(service.retry_interval.unwrap());
+
let mut s = ControlChannel {
digest,
service,
@@ -505,7 +508,6 @@ impl ControlChannelHandle {
tokio::spawn(
async move {
- let mut backoff = run_control_chan_backoff();
let mut start = Instant::now();
while let Err(err) = s
@@ -519,10 +521,10 @@ impl ControlChannelHandle {
if start.elapsed() > Duration::from_secs(3) {
// The client runs for at least 3 secs and then disconnects
- // Retry immediately
- backoff.reset();
- error!("{:#}. Retry...", err);
- } else if let Some(duration) = backoff.next_backoff() {
+ retry_backoff.reset();
+ }
+
+ if let Some(duration) = retry_backoff.next_backoff() {
error!("{:#}. Retry in {:?}...", err, duration);
time::sleep(duration).await;
} else {