From 41216babe6c4679cbc73384a1abc0dec1b87d0c7 Mon Sep 17 00:00:00 2001 From: ze0s <43699394+zze0s@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:55:23 +0100 Subject: [PATCH] fix(proxy): add shared transport for proxies (#1808) fix(proxy): use separate transport for proxies --- internal/proxy/service.go | 2 +- pkg/sharedhttp/http.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/internal/proxy/service.go b/internal/proxy/service.go index af3ad48..a6a8a9f 100644 --- a/internal/proxy/service.go +++ b/internal/proxy/service.go @@ -160,7 +160,7 @@ func GetProxiedHTTPClient(p *domain.Proxy) (*http.Client, error) { proxyUrl.User = url.UserPassword(p.User, p.Pass) } - transport := sharedhttp.TransportTLSInsecure + transport := sharedhttp.ProxyTransport // set user and pass if not empty if p.User != "" && p.Pass != "" { diff --git a/pkg/sharedhttp/http.go b/pkg/sharedhttp/http.go index 387d1d7..8eb5fa1 100644 --- a/pkg/sharedhttp/http.go +++ b/pkg/sharedhttp/http.go @@ -52,6 +52,26 @@ var TransportTLSInsecure = &http.Transport{ }, } +var ProxyTransport = &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, // default transport value + KeepAlive: 30 * time.Second, // default transport value + }).DialContext, + ForceAttemptHTTP2: true, // default is true; since HTTP/2 multiplexes a single TCP connection. + MaxIdleConns: 100, // default transport value + MaxIdleConnsPerHost: 10, // default is 2, so we want to increase the number to use establish more connections. + IdleConnTimeout: 90 * time.Second, // default transport value + ResponseHeaderTimeout: 120 * time.Second, // servers can respond slowly - this should fix some portion of releases getting stuck as pending. + TLSHandshakeTimeout: 10 * time.Second, // default transport value + ExpectContinueTimeout: 1 * time.Second, // default transport value + ReadBufferSize: 65536, + WriteBufferSize: 65536, + TLSClientConfig: &tls.Config{ + MinVersion: tls.VersionTLS12, + }, +} + var Client = &http.Client{ Timeout: 60 * time.Second, Transport: Transport,