ruby/ext/socket
Misaki Shioi 1683dadb19
Do not save ResolutionError if resolution succeeds for any address family (#12678)
* Do not save ResolutionError if resolution succeeds for any address family

Socket with Happy Eyeballs Version 2 performs connection attempts and name resolution in parallel.

In the existing implementation, if a connection attempt failed for one address family while name resolution was still in progress for the other, and that name resolution later failed, the method would terminate with a name resolution error.
This behavior was intended to ensure that the final error reflected the most recent failure, potentially overriding an earlier error.

However, [Bug #21088](https://bugs.ruby-lang.org/issues/21088) made me realize that terminating with a name resolution error is unnatural when name resolution succeeded for at least one address family.

This PR modifies the behavior so that if name resolution succeeds for one address family, any name resolution error from the other is not saved.

This PR includes the following changes:

* Do not display select(2) as the system call that caused the raised error, as it is for internal processing

* Fix bug: Get errno with Socket::SO_ERROR in Windows environment with a workaround for tests not passing
2025-02-03 20:26:47 +09:00
..
lib Do not save ResolutionError if resolution succeeds for any address family (#12678) 2025-02-03 20:26:47 +09:00
.document
addrinfo.h Expand tabs [ci skip] 2022-07-21 09:42:04 -07:00
ancdata.c Move directives outside rb_ary_new3 call 2024-10-10 11:30:37 +09:00
basicsocket.c Update BasicSocket to use rb_io_blocking_region. 2024-10-09 21:05:01 +13:00
constants.c Expand tabs [ci skip] 2022-07-21 09:42:04 -07:00
depend ruby tool/update-deps --fix 2024-04-27 21:55:28 +09:00
extconf.rb Revert "Set AI_ADDRCONFIG when making getaddrinfo(3) calls for outgoing conns" 2024-02-01 11:09:54 +11:00
getaddrinfo.c Don't check for null pointer in calls to free 2023-06-30 09:13:31 -04:00
getnameinfo.c Expand tabs [ci skip] 2022-07-21 09:42:04 -07:00
ifaddr.c Expand tabs [ci skip] 2022-07-21 09:42:04 -07:00
init.c Improve doc for Socket::ResolutionError (#12434) 2024-12-23 15:05:00 +09:00
ipsocket.c Do not save ResolutionError if resolution succeeds for any address family (#12678) 2025-02-03 20:26:47 +09:00
mkconstants.rb Drop support for old ERB 2024-03-03 00:55:45 +09:00
option.c Add support for sockaddr_un on Windows. (#6513) 2022-11-17 14:50:25 -08:00
raddrinfo.c Wrap do_fast_fallback_getaddrinfo with rb_thread_prevent_fork (#12366) 2024-12-18 09:48:26 +09:00
rubysocket.h Wrap do_fast_fallback_getaddrinfo with rb_thread_prevent_fork (#12366) 2024-12-18 09:48:26 +09:00
socket.c Fix broken links to Socket.tcp_fast_fallback= 2024-12-15 15:36:08 +09:00
sockport.h
sockssocket.c [Feature #120782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new (#11653) 2024-11-12 10:06:48 +09:00
tcpserver.c [Feature #120782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new (#11653) 2024-11-12 10:06:48 +09:00
tcpsocket.c Fix broken links to Socket.tcp_fast_fallback= 2024-12-15 15:36:08 +09:00
udpsocket.c Support IO#timeout for rsock_connect. (#11880) 2024-10-12 10:08:34 +13:00
unixserver.c Add support for sockaddr_un on Windows. (#6513) 2022-11-17 14:50:25 -08:00
unixsocket.c Support IO#timeout for rsock_connect. (#11880) 2024-10-12 10:08:34 +13:00