Get the error codes as Socket::EAI_XXX when getaddrinfo
and getnameinfo
fail
#9018
+44
−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.
This PR allows getting the error codes as
Socket::EAI_XXX
whengetaddrinfo
andgetnameinfo
fail.The purpose of this PR
This PR is necessary to implement Happy Eyeballs version 2 (RFC 8305) in
Socket.tcp
.In HEv2,
EAI_ADDRFAMILY
andEAI_AGAIN
obtained during name resolution should be ignored. However, there is currently no way to askSocketError
for errors returned bygetaddrinfo
, so I opened this PR.Changes
Socket::ResolutionError
as a subclass ofSocketError
SocketError
(rb_eSocket
) withSocket::ResolutionError
(rb_eResolutionError
) inrsock_raise_socket_error
because this function is only called whengetaddrinfo
andgetnameinfo
failrsock_raise_socket_error
torock_raise_resolution_error
for the same reasonNote
Socket::ResolutionError is a subclass of SocketError, so it does not affect
rescue SocketError
in source codes.