* Split provider/pia.go in piav3.go and piav4.go * Change port forwarding signature * Enable port forwarding parameter for PIA v4 * Fix VPN gateway IP obtention * Setup HTTP client for TLS with custom cert * Error message for regions not supporting pf
30 lines
479 B
Go
30 lines
479 B
Go
package provider
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/qdm12/golibs/logging"
|
|
)
|
|
|
|
func tryUntilSuccessful(ctx context.Context, logger logging.Logger, fn func() error) {
|
|
const retryPeriod = 10 * time.Second
|
|
for {
|
|
err := fn()
|
|
if err == nil {
|
|
break
|
|
}
|
|
logger.Error(err)
|
|
logger.Info("Trying again in %s", retryPeriod)
|
|
timer := time.NewTimer(retryPeriod)
|
|
select {
|
|
case <-timer.C:
|
|
case <-ctx.Done():
|
|
if !timer.Stop() {
|
|
<-timer.C
|
|
}
|
|
return
|
|
}
|
|
}
|
|
}
|