Hello, I am facing an issue with Happy Eyeballs in dual-stack mode when server list in resolv.conf starts from not responding IPv6 name servers like
IPv6 server1 <not responding> IPv6 server2 <not responding> IPv4 server1 <good> … IPv4 server N In this case, it takes libcurl too long to start IPv4 connection (10s, in my example, 5s per IPv6 name server) even though the HET option is 200ms. It seems the problem is that even though libcurl implements Happy Eyeballs for DNS queries and runs A and AAAA queries in parallel, c-ares still goes through the list of name servers as they are listed in the resolv.conf. So, in badly functioning IPv6 environment, c-ares tries not responding IPv6 servers first and spends 5s (c-ares DNS query timeout) for each server until it reaches good IPv4 name servers and then connection goes through Happy Eyeballs and IPv4 connection gets running. C-ares doesn’t seem to know anything about Happy Eyeballs, and it just goes blindly through the list of name servers. It is driven by libcurl, so I am wondering if libcurl’s Happy Eyeballs mechanism implementation somehow missed potential problems with c-ares trying not responding IPv6 name resolution servers for too long? Is it possible to work around this issue somehow? Thanks, Dmitry Karpov
-- Unsubscribe: https://lists.haxx.se/listinfo/curl-library Etiquette: https://curl.haxx.se/mail/etiquette.html
