|
|
|
@ -41,6 +41,10 @@ func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *in
|
|
|
|
|
return &BrowserDialerClient{} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tlsConfig := tls.ConfigFromStreamSettings(streamSettings) |
|
|
|
|
isH2 := tlsConfig != nil && !(len(tlsConfig.NextProtocol) == 1 && tlsConfig.NextProtocol[0] == "http/1.1") |
|
|
|
|
isH3 := tlsConfig != nil && (len(tlsConfig.NextProtocol) == 1 && tlsConfig.NextProtocol[0] == "h3") |
|
|
|
|
|
|
|
|
|
globalDialerAccess.Lock() |
|
|
|
|
defer globalDialerAccess.Unlock() |
|
|
|
|
|
|
|
|
@ -48,14 +52,13 @@ func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *in
|
|
|
|
|
globalDialerMap = make(map[dialerConf]DialerClient) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if isH3 { |
|
|
|
|
dest.Network = net.Network_UDP |
|
|
|
|
} |
|
|
|
|
if client, found := globalDialerMap[dialerConf{dest, streamSettings}]; found { |
|
|
|
|
return client |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
tlsConfig := tls.ConfigFromStreamSettings(streamSettings) |
|
|
|
|
isH2 := tlsConfig != nil && !(len(tlsConfig.NextProtocol) == 1 && tlsConfig.NextProtocol[0] == "http/1.1") |
|
|
|
|
isH3 := tlsConfig != nil && (len(tlsConfig.NextProtocol) == 1 && tlsConfig.NextProtocol[0] == "h3") |
|
|
|
|
|
|
|
|
|
var gotlsConfig *gotls.Config |
|
|
|
|
|
|
|
|
|
if tlsConfig != nil { |
|
|
|
@ -86,7 +89,6 @@ func getHTTPClient(ctx context.Context, dest net.Destination, streamSettings *in
|
|
|
|
|
var uploadTransport http.RoundTripper |
|
|
|
|
|
|
|
|
|
if isH3 { |
|
|
|
|
dest.Network = net.Network_UDP |
|
|
|
|
roundTripper := &http3.RoundTripper{ |
|
|
|
|
TLSClientConfig: gotlsConfig, |
|
|
|
|
Dial: func(ctx context.Context, addr string, tlsCfg *gotls.Config, cfg *quic.Config) (quic.EarlyConnection, error) { |
|
|
|
|