Fix "happy eyeballs" not being disabled since Golang 1.12 upgrade
* The Dialer.DualStack setting is now ignored and deprecated; RFC 6555 Fast Fallback ("Happy Eyeballs") is now enabled by default. To disable, set Dialer.FallbackDelay to a negative value.
This commit is contained in:
parent
dfd1ca5fb5
commit
43babbc2f9
|
@ -203,11 +203,14 @@ func prepareTunnelConfig(
|
||||||
TLSClientConfig: &tls.Config{RootCAs: originCertPool, InsecureSkipVerify: c.IsSet("no-tls-verify")},
|
TLSClientConfig: &tls.Config{RootCAs: originCertPool, InsecureSkipVerify: c.IsSet("no-tls-verify")},
|
||||||
}
|
}
|
||||||
|
|
||||||
dialContext := (&net.Dialer{
|
dialer := &net.Dialer{
|
||||||
Timeout: c.Duration("proxy-connect-timeout"),
|
Timeout: c.Duration("proxy-connect-timeout"),
|
||||||
KeepAlive: c.Duration("proxy-tcp-keepalive"),
|
KeepAlive: c.Duration("proxy-tcp-keepalive"),
|
||||||
DualStack: !c.Bool("proxy-no-happy-eyeballs"),
|
}
|
||||||
}).DialContext
|
if c.Bool("proxy-no-happy-eyeballs") {
|
||||||
|
dialer.FallbackDelay = -1 // As of Golang 1.12, a negative delay disables "happy eyeballs"
|
||||||
|
}
|
||||||
|
dialContext := dialer.DialContext
|
||||||
|
|
||||||
if c.IsSet("unix-socket") {
|
if c.IsSet("unix-socket") {
|
||||||
unixSocket, err := config.ValidateUnixSocket(c)
|
unixSocket, err := config.ValidateUnixSocket(c)
|
||||||
|
|
|
@ -202,7 +202,7 @@ func (em *EdgeManager) dialEdge(ctx context.Context, edgeIP *net.TCPAddr) (*tls.
|
||||||
dialCtx, dialCancel := context.WithTimeout(ctx, timeout)
|
dialCtx, dialCancel := context.WithTimeout(ctx, timeout)
|
||||||
defer dialCancel()
|
defer dialCancel()
|
||||||
|
|
||||||
dialer := net.Dialer{DualStack: true}
|
dialer := net.Dialer{}
|
||||||
edgeConn, err := dialer.DialContext(dialCtx, "tcp", edgeIP.String())
|
edgeConn, err := dialer.DialContext(dialCtx, "tcp", edgeIP.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, dialError{cause: errors.Wrap(err, "DialContext error")}
|
return nil, dialError{cause: errors.Wrap(err, "DialContext error")}
|
||||||
|
|
|
@ -465,7 +465,7 @@ type TunnelHandler struct {
|
||||||
noChunkedEncoding bool
|
noChunkedEncoding bool
|
||||||
}
|
}
|
||||||
|
|
||||||
var dialer = net.Dialer{DualStack: true}
|
var dialer = net.Dialer{}
|
||||||
|
|
||||||
// NewTunnelHandler returns a TunnelHandler, origin LAN IP and error
|
// NewTunnelHandler returns a TunnelHandler, origin LAN IP and error
|
||||||
func NewTunnelHandler(ctx context.Context,
|
func NewTunnelHandler(ctx context.Context,
|
||||||
|
|
|
@ -197,11 +197,14 @@ func (hc *HTTPOriginConfig) Service() (originservice.OriginService, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
dialContext := (&net.Dialer{
|
dialer := &net.Dialer{
|
||||||
Timeout: hc.ProxyConnectionTimeout,
|
Timeout: hc.ProxyConnectionTimeout,
|
||||||
KeepAlive: hc.TCPKeepAlive,
|
KeepAlive: hc.TCPKeepAlive,
|
||||||
DualStack: hc.DialDualStack,
|
}
|
||||||
}).DialContext
|
if !hc.DialDualStack {
|
||||||
|
dialer.FallbackDelay = -1
|
||||||
|
}
|
||||||
|
dialContext := dialer.DialContext
|
||||||
transport := &http.Transport{
|
transport := &http.Transport{
|
||||||
Proxy: http.ProxyFromEnvironment,
|
Proxy: http.ProxyFromEnvironment,
|
||||||
DialContext: dialContext,
|
DialContext: dialContext,
|
||||||
|
@ -270,7 +273,6 @@ func (*HelloWorldOriginConfig) Service() (originservice.OriginService, error) {
|
||||||
DialContext: (&net.Dialer{
|
DialContext: (&net.Dialer{
|
||||||
Timeout: 30 * time.Second,
|
Timeout: 30 * time.Second,
|
||||||
KeepAlive: 30 * time.Second,
|
KeepAlive: 30 * time.Second,
|
||||||
DualStack: true,
|
|
||||||
}).DialContext,
|
}).DialContext,
|
||||||
TLSClientConfig: &tls.Config{
|
TLSClientConfig: &tls.Config{
|
||||||
RootCAs: rootCAs,
|
RootCAs: rootCAs,
|
||||||
|
|
Loading…
Reference in New Issue