Project

General

Profile

Actions

Feature #20018

closed

Get the error codes as Socket::EAI_XXX when getaddrinfo and getnameinfo fail

Added by shioimm (Misaki Shioi) about 1 year ago. Updated about 1 year ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:115462]

Description

Feature for implementing Happy Eyeballs version 2 (RFC 8305) in Socket.tcp.

Probrem

I would like to implement Happy Eyeballs version 2 (RFC 8305) in Socket.tcp.
In HEv2, EAI_ADDRFAMILY and EAI_AGAIN should be ignored when getaddrinfoo returns them in hostname resolution. However, there is currently no way to ask SocketError for errors returned by getaddrinfo

Proposal

I opened a PR to get errors when getaddrinfo and getnameinfo returns them.

https://github.com/ruby/ruby/pull/9018

Todo this,

  • I added Socket::ResolutionError as a subclass of SocketError
  • I added an attribute of Socket::ResolutionError to get error code via `#error_code
  • I replaced SocketError (rb_eSocket) with Socket::ResolutionError (rb_eResolutionError) in rsock_raise_socket_errorbecause this function is only called whengetaddrinfoandgetnameinfo` fail
  • I renamed rsock_raise_socket_error to rock_raise_resolution_error for the same reason

In addition, Socket::ResolutionError is a subclass of SocketError, so it does not affect rescue SocketError in source codes.

Actions

Also available in: Atom PDF

Like0
Like0