From: akr@... Date: 2015-03-01T00:33:27+00:00 Subject: [ruby-core:68359] [Ruby trunk - Misc #10907] [Rejected] Documentation of Addrinfo.new suggests default family of PF_UNSPEC while in practise it appears to be AF_INET Issue #10907 has been updated by Akira Tanaka. Status changed from Open to Rejected Use pfamily as you noticed. pfamily (and 2nd argument for Addrinfo.new) corresponds to ai_family field of struct addrinfo and will be used for 1st argument of socket(). afamily (and first 1 or 2 bytes in 1st argument for Addrinfo.new) corresponds to sa_family field of struct sockaddr and will be used for bind() or connect(). ---------------------------------------- Misc #10907: Documentation of Addrinfo.new suggests default family of PF_UNSPEC while in practise it appears to be AF_INET https://bugs.ruby-lang.org/issues/10907#change-51704 * Author: Yorick Peterse * Status: Rejected * Priority: Low * Assignee: ---------------------------------------- The documentation of Addrinfo.new states the following: > family is specified as an integer to specify the protocol family such as > Socket::PF_INET. It can be a symbol or a string which is the constant name > with or without PF_ prefix such as :INET, :INET6, :UNIX, "PF_INET", etc. If > omitted, PF_UNSPEC is assumed. However, the behaviour contradicts this: Addrinfo.new(Socket.sockaddr_in(80, 'localhost')).afamily == Socket::PF_UNSPEC # => false Addrinfo.new(Socket.sockaddr_in(80, 'localhost')).afamily == Socket::AF_INET # => true The question here is, which of the following is the case: 1. The documentation is simply incorrect, the default is always `AF_INET` 2. The behaviour is incorrect, it should be `PF_UNSPEC` instead of `AF_INET` 3. This is platform specific (meaning the documentation should state this) On Twitter Matz mentioned () thinking it was platform specific, but I'd like to be 100% sure about this. -- https://bugs.ruby-lang.org/