@@ -46,21 +46,8 @@ func NewControlServerClient(serverURL string, systemAdminKey string, insecureSki
4646 return nil , fmt .Errorf ("failed to parse server URL: %w" , err )
4747 }
4848
49- var transport http.RoundTripper
50- if strings .ToLower (parsedURL .Scheme ) == "https" {
51- // Use TLS transport for HTTPS
52- transport = & http.Transport {
53- TLSClientConfig : & tls.Config {
54- InsecureSkipVerify : insecureSkipVerify ,
55- },
56- }
57- } else {
58- // Use plain HTTP transport without TLS
59- transport = & http.Transport {}
60- }
61-
6249 httpClient := & http.Client {
63- Transport : transport ,
50+ Transport : newControlServerTransport ( parsedURL . Scheme , insecureSkipVerify ) ,
6451 Timeout : 30 * time .Second ,
6552 }
6653
@@ -78,6 +65,26 @@ func NewControlServerClient(serverURL string, systemAdminKey string, insecureSki
7865 }, nil
7966}
8067
68+ func newControlServerTransport (scheme string , insecureSkipVerify bool ) http.RoundTripper {
69+ transport , ok := http .DefaultTransport .(* http.Transport )
70+ if ! ok {
71+ return http .DefaultTransport
72+ }
73+
74+ clone := transport .Clone ()
75+ if strings .ToLower (scheme ) == "https" {
76+ tlsConfig := & tls.Config {
77+ InsecureSkipVerify : insecureSkipVerify ,
78+ }
79+ if clone .TLSClientConfig != nil {
80+ tlsConfig = clone .TLSClientConfig .Clone ()
81+ tlsConfig .InsecureSkipVerify = insecureSkipVerify
82+ }
83+ clone .TLSClientConfig = tlsConfig
84+ }
85+ return clone
86+ }
87+
8188// authInterceptor adds authentication to requests
8289type authInterceptor struct {
8390 auth ionscaleclient.ClientAuth
0 commit comments