|
@@ -401,10 +401,11 @@ fetcherLoop:
|
|
|
|
|
|
|
|
NoticeAlert("failed to fetch %s remote server list: %s", name, err)
|
|
NoticeAlert("failed to fetch %s remote server list: %s", name, err)
|
|
|
|
|
|
|
|
- timeout := time.After(retryPeriod)
|
|
|
|
|
|
|
+ timer := time.NewTimer(retryPeriod)
|
|
|
select {
|
|
select {
|
|
|
- case <-timeout:
|
|
|
|
|
|
|
+ case <-timer.C:
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break fetcherLoop
|
|
break fetcherLoop
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -421,10 +422,12 @@ fetcherLoop:
|
|
|
func (controller *Controller) establishTunnelWatcher() {
|
|
func (controller *Controller) establishTunnelWatcher() {
|
|
|
defer controller.runWaitGroup.Done()
|
|
defer controller.runWaitGroup.Done()
|
|
|
|
|
|
|
|
- timeout := time.After(
|
|
|
|
|
|
|
+ timer := time.NewTimer(
|
|
|
time.Duration(*controller.config.EstablishTunnelTimeoutSeconds) * time.Second)
|
|
time.Duration(*controller.config.EstablishTunnelTimeoutSeconds) * time.Second)
|
|
|
|
|
+ defer timer.Stop()
|
|
|
|
|
+
|
|
|
select {
|
|
select {
|
|
|
- case <-timeout:
|
|
|
|
|
|
|
+ case <-timer.C:
|
|
|
if !controller.hasEstablishedOnce() {
|
|
if !controller.hasEstablishedOnce() {
|
|
|
NoticeAlert("failed to establish tunnel before timeout")
|
|
NoticeAlert("failed to establish tunnel before timeout")
|
|
|
controller.SignalComponentFailure()
|
|
controller.SignalComponentFailure()
|
|
@@ -468,13 +471,14 @@ loop:
|
|
|
} else {
|
|
} else {
|
|
|
duration = PSIPHON_API_CONNECTED_REQUEST_RETRY_PERIOD
|
|
duration = PSIPHON_API_CONNECTED_REQUEST_RETRY_PERIOD
|
|
|
}
|
|
}
|
|
|
- timeout := time.After(duration)
|
|
|
|
|
|
|
+ timer := time.NewTimer(duration)
|
|
|
select {
|
|
select {
|
|
|
case <-controller.signalReportConnected:
|
|
case <-controller.signalReportConnected:
|
|
|
- case <-timeout:
|
|
|
|
|
|
|
+ timer.Stop()
|
|
|
|
|
+ case <-timer.C:
|
|
|
// Make another connected request
|
|
// Make another connected request
|
|
|
-
|
|
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -570,11 +574,12 @@ downloadLoop:
|
|
|
|
|
|
|
|
NoticeAlert("failed to download upgrade: %s", err)
|
|
NoticeAlert("failed to download upgrade: %s", err)
|
|
|
|
|
|
|
|
- timeout := time.After(
|
|
|
|
|
|
|
+ timer := time.NewTimer(
|
|
|
time.Duration(*controller.config.DownloadUpgradeRetryPeriodSeconds) * time.Second)
|
|
time.Duration(*controller.config.DownloadUpgradeRetryPeriodSeconds) * time.Second)
|
|
|
select {
|
|
select {
|
|
|
- case <-timeout:
|
|
|
|
|
|
|
+ case <-timer.C:
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break downloadLoop
|
|
break downloadLoop
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1340,8 +1345,10 @@ loop:
|
|
|
case <-timer.C:
|
|
case <-timer.C:
|
|
|
case <-controller.serverAffinityDoneBroadcast:
|
|
case <-controller.serverAffinityDoneBroadcast:
|
|
|
case <-controller.stopEstablishingBroadcast:
|
|
case <-controller.stopEstablishingBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
}
|
|
}
|
|
|
} else if controller.config.StaggerConnectionWorkersMilliseconds != 0 {
|
|
} else if controller.config.StaggerConnectionWorkersMilliseconds != 0 {
|
|
@@ -1353,8 +1360,10 @@ loop:
|
|
|
select {
|
|
select {
|
|
|
case <-timer.C:
|
|
case <-timer.C:
|
|
|
case <-controller.stopEstablishingBroadcast:
|
|
case <-controller.stopEstablishingBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1396,14 +1405,16 @@ loop:
|
|
|
// network conditions to change. Also allows for fetch remote to complete,
|
|
// network conditions to change. Also allows for fetch remote to complete,
|
|
|
// in typical conditions (it isn't strictly necessary to wait for this, there will
|
|
// in typical conditions (it isn't strictly necessary to wait for this, there will
|
|
|
// be more rounds if required).
|
|
// be more rounds if required).
|
|
|
- timeout := time.After(
|
|
|
|
|
|
|
+ timer := time.NewTimer(
|
|
|
time.Duration(*controller.config.EstablishTunnelPausePeriodSeconds) * time.Second)
|
|
time.Duration(*controller.config.EstablishTunnelPausePeriodSeconds) * time.Second)
|
|
|
select {
|
|
select {
|
|
|
- case <-timeout:
|
|
|
|
|
|
|
+ case <-timer.C:
|
|
|
// Retry iterating
|
|
// Retry iterating
|
|
|
case <-controller.stopEstablishingBroadcast:
|
|
case <-controller.stopEstablishingBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
case <-controller.shutdownBroadcast:
|
|
case <-controller.shutdownBroadcast:
|
|
|
|
|
+ timer.Stop()
|
|
|
break loop
|
|
break loop
|
|
|
}
|
|
}
|
|
|
|
|
|