[Bug #21512] Socket.tcp_with_fast_fallback: Pass proper addr family to getaddrinfo (#13878)

Socket.tcp_with_fast_fallback: Pass proper addr family to getaddrinfo

Addrinfo.getaddrinfo expects Socket::AF_INET or Socket::AF_INET6 as its
third argument (family). However Socket.tcp_with_fast_fallback was
incorrectly passing :ipv4 or :ipv6.

Repro:

    require 'socket'
    Socket.tcp_with_fast_fallback('example.com', 80, '127.0.0.1')

Expected behavior: Returns a Socket object
Actual: Raises unknown socket domain: ipv4 (SocketError)
This commit is contained in:
Daisuke Aritomo 2025-07-15 20:38:57 +09:00 committed by GitHub
parent 03800bff69
commit b896f80598
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -704,7 +704,7 @@ class Socket < BasicSocket
if resolving_family_names.size == 1 if resolving_family_names.size == 1
family_name = resolving_family_names.first family_name = resolving_family_names.first
addrinfos = Addrinfo.getaddrinfo(host, port, family_name, :STREAM, timeout: resolv_timeout) addrinfos = Addrinfo.getaddrinfo(host, port, ADDRESS_FAMILIES[:family_name], :STREAM, timeout: resolv_timeout)
resolution_store.add_resolved(family_name, addrinfos) resolution_store.add_resolved(family_name, addrinfos)
hostname_resolution_result = nil hostname_resolution_result = nil
hostname_resolution_notifier = nil hostname_resolution_notifier = nil