mirror of
https://github.com/ruby/ruby.git
synced 2025-08-23 13:04:13 +02:00
![]() When making an outgoing TCP or UDP connection, set AI_ADDRCONFIG in the hints we send to getaddrinfo(3) (if supported). This will prompt the resolver to _NOT_ issue A or AAAA queries if the system does not actually have an IPv4 or IPv6 address (respectively). This makes outgoing connections marginally more efficient on non-dual-stack systems, since we don't have to try connecting to an address which can't possibly work. More importantly, however, this works around a race condition present in some older versions of glibc on aarch64 where it could accidently send the two outgoing DNS queries with the same DNS txnid, and get confused when receiving the responses. This manifests as outgoing connections sometimes taking 5 seconds (the DNS timeout before retry) to be made. Fixes #19144 |
||
---|---|---|
.. | ||
lib | ||
.document | ||
addrinfo.h | ||
ancdata.c | ||
basicsocket.c | ||
constants.c | ||
depend | ||
extconf.rb | ||
getaddrinfo.c | ||
getnameinfo.c | ||
ifaddr.c | ||
init.c | ||
ipsocket.c | ||
mkconstants.rb | ||
option.c | ||
raddrinfo.c | ||
rubysocket.h | ||
socket.c | ||
sockport.h | ||
sockssocket.c | ||
tcpserver.c | ||
tcpsocket.c | ||
udpsocket.c | ||
unixserver.c | ||
unixsocket.c |