Skip to content

Commit

Permalink
Provide separate instances of http.Transport for proxies (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
hawarir authored and fahrinh committed Aug 15, 2019
1 parent ecf2365 commit ac6f68f
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions proxy.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,18 @@ type Proxy struct {
// BuildProxies constructs a Proxy object with mainTargetURL as the URL for Main proxy
// and canaryTargetURL as the URL for Canary proxy
func BuildProxies(configClient config.HTTPClientConfig, mainTargetURL, canaryTargetURL string) (*Proxy, error) {
tr := &http.Transport{
MaxIdleConns: configClient.MaxIdleConns,
IdleConnTimeout: time.Duration(configClient.IdleConnTimeout) * time.Second,
DisableCompression: configClient.DisableCompression,
}

proxyMain, err := newReverseProxy(mainTargetURL)
if err != nil {
return nil, errors.Trace(err)
}
proxyMain.Transport = tr
proxyMain.Transport = newTransport(configClient.MaxIdleConns, configClient.IdleConnTimeout, configClient.DisableCompression)

proxyCanary, err := newReverseProxy(canaryTargetURL)
if err != nil {
return nil, errors.Trace(err)
}
proxyCanary.Transport = tr
proxyCanary.Transport = newTransport(configClient.MaxIdleConns, configClient.IdleConnTimeout, configClient.DisableCompression)

proxies := &Proxy{
Main: proxyMain,
Expand All @@ -47,6 +42,14 @@ func BuildProxies(configClient config.HTTPClientConfig, mainTargetURL, canaryTar
return proxies, nil
}

func newTransport(maxIdleConns, idleConnTimeout int, disableCompression bool) *http.Transport {
return &http.Transport{
MaxIdleConns: maxIdleConns,
IdleConnTimeout: time.Duration(idleConnTimeout) * time.Second,
DisableCompression: disableCompression,
}
}

func newReverseProxy(target string) (*httputil.ReverseProxy, error) {
url, err := url.ParseRequestURI(target)
if err != nil {
Expand Down

0 comments on commit ac6f68f

Please sign in to comment.