feat(ext/net): implement Happy Eyeballs for Deno.connect and Deno.connectTls
#31726
+556
−19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implements the Happy Eyeballs v2 (RFC 8305) for TCP and TLS connections, enabling faster connection establishment on dual-stack networks by racing IPv6 and IPv4 addresses with staggered parallel attempts.
Closes #25661
Changes
ext/net/happy_eyeballs.rswith the core algorithm implementationDeno.connectandDeno.connectTlsto use Happy Eyeballs when multiple addresses are resolvedDeno.ConnectOptionsandDeno.ConnectTlsOptions:autoSelectFamily: Enable/disable Happy Eyeballs (default:true)autoSelectFamilyAttemptDelay: Delay between connection attempts in ms (default:250)How it works
This avoids the common problem where a broken IPv6 path causes long delays before falling back to IPv4.