diff --git a/docs/root/api/starting_envoy.rst b/docs/root/api/starting_envoy.rst index 05e7af0270..7b34dfa3f2 100644 --- a/docs/root/api/starting_envoy.rst +++ b/docs/root/api/starting_envoy.rst @@ -392,7 +392,7 @@ on supported platforms (iOS 12+) to update the preferred Envoy network cluster ( ``enableHappyEyeballs`` ~~~~~~~~~~~~~~~~~~~~~~~ -Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. +Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. Defaults to true. **Example**:: diff --git a/docs/root/intro/version_history.rst b/docs/root/intro/version_history.rst index 477544c083..25d05e8dbd 100644 --- a/docs/root/intro/version_history.rst +++ b/docs/root/intro/version_history.rst @@ -7,6 +7,7 @@ Pending Release Breaking changes: - api: replace the `drainConnections()` method with a broader `resetConnectivityState()`. (:issue:`#2225 <2225>`). +- net: enable happy eyeballs by default (:issue:`#2272 <2272>`) Bugfixes: diff --git a/library/common/config/config.cc b/library/common/config/config.cc index f36c7120eb..b8de82ddb3 100644 --- a/library/common/config/config.cc +++ b/library/common/config/config.cc @@ -45,9 +45,9 @@ const std::string config_header = R"( - &dns_fail_base_interval 2s - &dns_fail_max_interval 10s - &dns_query_timeout 25s -- &dns_lookup_family V4_PREFERRED +- &dns_lookup_family ALL - &dns_min_refresh_rate 60s -- &dns_multiple_addresses false +- &dns_multiple_addresses true - &dns_preresolve_hostnames [] - &dns_refresh_rate 60s - &dns_resolver_name envoy.network.dns_resolver.cares diff --git a/library/kotlin/io/envoyproxy/envoymobile/EngineBuilder.kt b/library/kotlin/io/envoyproxy/envoymobile/EngineBuilder.kt index 7bced539d5..277c531d26 100644 --- a/library/kotlin/io/envoyproxy/envoymobile/EngineBuilder.kt +++ b/library/kotlin/io/envoyproxy/envoymobile/EngineBuilder.kt @@ -41,7 +41,7 @@ open class EngineBuilder( private var dnsPreresolveHostnames = "[]" private var enableDrainPostDnsRefresh = false private var enableHttp3 = false - private var enableHappyEyeballs = false + private var enableHappyEyeballs = true private var enableInterfaceBinding = false private var h2ConnectionKeepaliveIdleIntervalMilliseconds = 1 private var h2ConnectionKeepaliveTimeoutSeconds = 10 @@ -231,7 +231,8 @@ open class EngineBuilder( } /** - * Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. + * Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. Defaults to + * true. * * @param enableHappyEyeballs whether to enable RFC 6555 handling for IPv4/IPv6. * diff --git a/library/swift/EngineBuilder.swift b/library/swift/EngineBuilder.swift index dd9fc6ad07..6c69cee0b7 100644 --- a/library/swift/EngineBuilder.swift +++ b/library/swift/EngineBuilder.swift @@ -22,7 +22,7 @@ open class EngineBuilder: NSObject { private var dnsMinRefreshSeconds: UInt32 = 60 private var dnsPreresolveHostnames: String = "[]" private var dnsRefreshSeconds: UInt32 = 60 - private var enableHappyEyeballs: Bool = false + private var enableHappyEyeballs: Bool = true private var enableInterfaceBinding: Bool = false private var enforceTrustChainVerification: Bool = true private var enableDrainPostDnsRefresh: Bool = false @@ -154,7 +154,8 @@ open class EngineBuilder: NSObject { return self } - /// Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. + /// Specify whether to use Happy Eyeballs when multiple IP stacks may be supported. Defaults to + /// true. /// /// - parameter enableHappyEyeballs: whether to enable RFC 6555 handling for IPv4/IPv6. /// diff --git a/test/kotlin/apps/experimental/MainActivity.kt b/test/kotlin/apps/experimental/MainActivity.kt index 1836d682a5..5eb19b5fd9 100644 --- a/test/kotlin/apps/experimental/MainActivity.kt +++ b/test/kotlin/apps/experimental/MainActivity.kt @@ -50,7 +50,6 @@ class MainActivity : Activity() { .addPlatformFilter(::DemoFilter) .addPlatformFilter(::BufferDemoFilter) .addPlatformFilter(::AsyncDemoFilter) - .enableHappyEyeballs(true) .h2ExtendKeepaliveTimeout(true) .enableInterfaceBinding(true) .addNativeFilter("envoy.filters.http.buffer", "{\"@type\":\"type.googleapis.com/envoy.extensions.filters.http.buffer.v3.Buffer\",\"max_request_bytes\":5242880}") diff --git a/test/swift/apps/experimental/ViewController.swift b/test/swift/apps/experimental/ViewController.swift index 8ce5732808..59644895ed 100644 --- a/test/swift/apps/experimental/ViewController.swift +++ b/test/swift/apps/experimental/ViewController.swift @@ -22,7 +22,6 @@ final class ViewController: UITableViewController { .addPlatformFilter(DemoFilter.init) .addPlatformFilter(BufferDemoFilter.init) .addPlatformFilter(AsyncDemoFilter.init) - .enableHappyEyeballs(true) .h2ExtendKeepaliveTimeout(true) .enableInterfaceBinding(true) // swiftlint:disable:next line_length