@@ -2,6 +2,7 @@ package dialer
22
33import (
44 "context"
5+ "crypto/tls"
56 "errors"
67 "fmt"
78 "io"
@@ -63,14 +64,16 @@ func SelectRandom(_ context.Context, dialers []ContextDialer) (ContextDialer, er
6364 return dialers [rand .IntN (len (dialers ))], nil
6465}
6566
66- func probeDialer (ctx context.Context , dialer ContextDialer , url string , dlLimit int64 ) error {
67+ func probeDialer (ctx context.Context , dialer ContextDialer , url string , dlLimit int64 , tlsClientConfig * tls. Config ) error {
6768 httpClient := http.Client {
6869 Transport : & http.Transport {
6970 MaxIdleConns : 100 ,
7071 IdleConnTimeout : 90 * time .Second ,
7172 TLSHandshakeTimeout : 10 * time .Second ,
7273 ExpectContinueTimeout : 1 * time .Second ,
7374 DialContext : dialer .DialContext ,
75+ TLSClientConfig : tlsClientConfig ,
76+ ForceAttemptHTTP2 : true ,
7477 },
7578 }
7679 req , err := http .NewRequestWithContext (ctx , "GET" , url , nil )
@@ -93,7 +96,7 @@ func probeDialer(ctx context.Context, dialer ContextDialer, url string, dlLimit
9396 return err
9497}
9598
96- func NewFastestServerSelectionFunc (url string , dlLimit int64 ) SelectionFunc {
99+ func NewFastestServerSelectionFunc (url string , dlLimit int64 , tlsClientConfig * tls. Config ) SelectionFunc {
97100 return func (ctx context.Context , dialers []ContextDialer ) (ContextDialer , error ) {
98101 var resErr error
99102 masterNotInterested := make (chan struct {})
@@ -102,7 +105,7 @@ func NewFastestServerSelectionFunc(url string, dlLimit int64) SelectionFunc {
102105 success := make (chan ContextDialer )
103106 for _ , dialer := range dialers {
104107 go func (dialer ContextDialer ) {
105- err := probeDialer (ctx , dialer , url , dlLimit )
108+ err := probeDialer (ctx , dialer , url , dlLimit , tlsClientConfig )
106109 if err == nil {
107110 select {
108111 case success <- dialer :
0 commit comments