-
Notifications
You must be signed in to change notification settings - Fork 49
Happy Eyeballs breaks simple-get if ipv6 times out #85
Description
The underlying issue is that when dns resolves to multiple IPs all ips are attempted. ipv6 is tried first, then ipv4. This behavior is known as Happy Eyeballs. https://en.wikipedia.org/wiki/Happy_Eyeballs
node http now (v18 or v20?) tries both ipv6 and ipv4 addresses on requests.
For every ip connect timeout failure, it will emit a timeout event which simple-get interprets as an error and terminate the request (which is still attempting other ips).
Line 75 in e7a7411
| req.abort() |
Specifically, disabling/ignoring this ipv6 timeout event in simple-get allows the request to succeed on ipv4, and prebuild-install completes successfully.
This timeout event handling may be a bug in either node (since the entire request hasnt timed out, just 1 ip attempt), or a bug in simple-get where it should be more discerning about which request timeout events it should observe. In any case, this is an issue with an end user machines ipv6 network configuration.