@@ -15,6 +15,7 @@ import (
1515 "time"
1616
1717 "github.com/pkg/errors"
18+ "golang.org/x/net/http2"
1819
1920 "github.com/elastic/beats/v7/libbeat/common"
2021 "github.com/elastic/beats/v7/libbeat/common/transport"
@@ -113,8 +114,16 @@ func NewWithConfig(log *logger.Logger, cfg Config, wrapper wrapperFunc) (*Client
113114 hosts := cfg .GetHosts ()
114115 clients := make ([]* requestClient , len (hosts ))
115116 for i , host := range cfg .GetHosts () {
116- var transport http.RoundTripper
117- transport , err := makeTransport (cfg .Timeout , cfg .TLS )
117+ connStr , err := common .MakeURL (string (cfg .Protocol ), p , host , 0 )
118+ if err != nil {
119+ return nil , errors .Wrap (err , "invalid fleet-server endpoint" )
120+ }
121+ addr , err := url .Parse (connStr )
122+ if err != nil {
123+ return nil , errors .Wrap (err , "invalid fleet-server endpoint" )
124+ }
125+
126+ transport , err := makeTransport (addr .Scheme , cfg .Timeout , cfg .TLS )
118127 if err != nil {
119128 return nil , err
120129 }
@@ -136,12 +145,8 @@ func NewWithConfig(log *logger.Logger, cfg Config, wrapper wrapperFunc) (*Client
136145 Timeout : cfg .Timeout ,
137146 }
138147
139- url , err := common .MakeURL (string (cfg .Protocol ), p , host , 0 )
140- if err != nil {
141- return nil , errors .Wrap (err , "invalid fleet-server endpoint" )
142- }
143148 clients [i ] = & requestClient {
144- request : prefixRequestFactory (url ),
149+ request : prefixRequestFactory (connStr ),
145150 client : httpClient ,
146151 }
147152 }
@@ -272,17 +277,18 @@ func prefixRequestFactory(URL string) requestFunc {
272277}
273278
274279// makeTransport create a transport object based on the TLS configuration.
275- func makeTransport (timeout time.Duration , tls * tlscommon.Config ) (* http.Transport , error ) {
280+ func makeTransport (scheme string , timeout time.Duration , tls * tlscommon.Config ) (http.RoundTripper , error ) {
281+ dialer := transport .NetDialer (timeout )
282+ if scheme == "http" {
283+ return & http.Transport {Dial : dialer .Dial }, nil
284+ }
276285 tlsConfig , err := tlscommon .LoadTLSConfig (tls )
277286 if err != nil {
278287 return nil , errors .Wrap (err , "invalid TLS configuration" )
279288 }
280- dialer := transport .NetDialer (timeout )
281- tlsDialer , err := transport .TLSDialer (dialer , tlsConfig , timeout )
289+ tlsDialer , err := transport .TLSDialerH2 (dialer , tlsConfig , timeout )
282290 if err != nil {
283291 return nil , errors .Wrap (err , "fail to create TLS dialer" )
284292 }
285-
286- // TODO: Dial is deprecated we need to move to DialContext.
287- return & http.Transport {Dial : dialer .Dial , DialTLS : tlsDialer .Dial }, nil
293+ return & http2.Transport {DialTLS : tlsDialer .Dial }, nil
288294}
0 commit comments