Project

General

Profile

Actions

Bug #10908

closed

Addrinfo.new appears to ignore the afamily argument when using a String for sockaddr

Added by yorickpeterse (Yorick Peterse) about 9 years ago. Updated about 9 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
[ruby-core:68322]

Description

When creating a new Addrinfo instance the new class method appears to ignore
the 2nd (afamily) argument and always sets it to AF_INET. Some examples:

Socket::AF_INET # => 2

Addrinfo.new(Socket.sockaddr_in(80, 'localhost')).afamily                    # => 2
Addrinfo.new(Socket.sockaddr_in(80, 'localhost'), Socket::AF_INET6).afamily  # => 2
Addrinfo.new(Socket.sockaddr_in(80, 'localhost'), Socket::PF_UNSPEC).afamily # => 2
Addrinfo.new(Socket.sockaddr_in(80, 'localhost'), Socket::AF_IPX).afamily    # => 2
Addrinfo.new(Socket.sockaddr_in(80, 'localhost'), Socket::AF_LOCAL).afamily  # => 2

Is this correct, or is this a bug?

The documentation states the following about this argument:

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.

I looked at the tests but couldn't find any specific examples of this behaviour.
For Rubinius I ended up writing the following Rubyspec which currently passes on
both Rubinius (you'll need the Git master branch for this, for now) and Ruby
2.2: http://git.io/AhpQ. I've attached the spec as well in case the URL stops
working.


Files

initialize_spec.rb (3.68 KB) initialize_spec.rb yorickpeterse (Yorick Peterse), 02/26/2015 11:36 AM

Related issues 1 (0 open1 closed)

Related to Ruby master - Misc #10907: Documentation of Addrinfo.new suggests default family of PF_UNSPEC while in practise it appears to be AF_INETRejected02/26/2015Actions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0