diff options
Diffstat (limited to 'workhorse/internal/upstream/upstream.go')
-rw-r--r-- | workhorse/internal/upstream/upstream.go | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/workhorse/internal/upstream/upstream.go b/workhorse/internal/upstream/upstream.go index d6e5e7766b5..e57f58d59dd 100644 --- a/workhorse/internal/upstream/upstream.go +++ b/workhorse/internal/upstream/upstream.go @@ -50,7 +50,7 @@ type upstream struct { geoLocalRoutes []routeEntry geoProxyCableRoute routeEntry geoProxyRoute routeEntry - geoProxyTestChannel chan struct{} + geoProxyPollSleep func(time.Duration) accessLogger *logrus.Logger enableGeoProxyFeature bool mu sync.RWMutex @@ -68,6 +68,9 @@ func newUpstream(cfg config.Config, accessLogger *logrus.Logger, routesCallback enableGeoProxyFeature: os.Getenv("GEO_SECONDARY_PROXY") == "1", geoProxyBackend: &url.URL{}, } + if up.geoProxyPollSleep == nil { + up.geoProxyPollSleep = time.Sleep + } if up.Backend == nil { up.Backend = DefaultBackend } @@ -205,13 +208,7 @@ func (u *upstream) findGeoProxyRoute(cleanedPath string, r *http.Request) *route func (u *upstream) pollGeoProxyAPI() { for { u.callGeoProxyAPI() - - // Notify tests when callGeoProxyAPI() finishes - if u.geoProxyTestChannel != nil { - u.geoProxyTestChannel <- struct{}{} - } - - time.Sleep(geoProxyApiPollingInterval) + u.geoProxyPollSleep(geoProxyApiPollingInterval) } } @@ -234,6 +231,11 @@ func (u *upstream) updateGeoProxyFields(geoProxyURL *url.URL) { defer u.mu.Unlock() u.geoProxyBackend = geoProxyURL + + if u.geoProxyBackend.String() == "" { + return + } + geoProxyRoundTripper := roundtripper.NewBackendRoundTripper(u.geoProxyBackend, "", u.ProxyHeadersTimeout, u.DevelopmentMode) geoProxyUpstream := proxypkg.NewProxy(u.geoProxyBackend, u.Version, geoProxyRoundTripper) u.geoProxyCableRoute = u.wsRoute(`^/-/cable\z`, geoProxyUpstream) |