[Bug #3259] test_socket.rb has 1 Error on Mac OS X 10.6

Bug #3259: test_socket.rb has 1 Error on Mac OS X 10.6
http://redmine.ruby-lang.org/issues/show/3259

e$B5/I<<Te(B: Tomoyuki C.
e$B%9%F!<%?%9e(B: Open, e$BM%@hEYe(B: Normal
e$B%+%F%4%je(B: ext
ruby -v: ruby 1.9.3dev (2010-05-08 trunk 27661) [x86_64-darwin10.3.0]

Mac OS X 10.6 (SnowLeopard)e$B>e$Ge(B trunk(r27662) e$B$Ne(B make
test-all e$B$9$k$He(B test_socket.rb e$B$,e(B 1 Error e$B$K$J$j$^$9!#e(B

  1. Error:
    test_tcp(TestSocket):
    Errno::EINVAL: Invalid argument - connect(2)
    /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/.ext/common/socket.rb:37:in
    connect' /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/.ext/common/socket.rb:37:in connect_internal’
    /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/.ext/common/socket.rb:86:in
    connect' /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/test/socket/test_socket.rb:82:in block in test_tcp’
    /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/test/socket/test_socket.rb:80:in
    open' /Users/nagachika/opt/ruby-trunk/src/ruby-trunk/test/socket/test_socket.rb:80:in test_tcp’

ext/socket/lib/socket.rb e$B$Ne(B AddrInfo#connect_address e$B$Ge(B
MacOS X 10.4 e$B$,JV$9e(B IPv6
e$B$N%"%I%l%9I=8=$,FC<le(B(0.0.0.0)e$B$J$N$GBP=h$,$5$l$F$$$k$h$&$J$N$G$9$,!"e(B10.6
e$B$G$O$^$?>/$70c$C$?I=8=e(B(::ffff:0.0.0.0)e$B$rJV$9$h$&$K$J$C$F$$$k$h$&$G$9!#e(BMac
OS X 10.5 (Leopard)e$B$N4D6-$O<j85$K$J$$$?$aL$3NG’$G$9!#e(B

e$B0J2<$NJQ99$r2C$($Fe(B make test-all e$B$G$3$Ne(B Error
e$B$,$J$/$J$k$3$H!"B>$Ke(B Error e$B$,A}$($J$$$3$H$r3NG’$7$^$7$?!#e(B

Index: ext/socket/lib/socket.rb

— ext/socket/lib/socket.rb (revision 27662)
+++ ext/socket/lib/socket.rb (working copy)
@@ -192,6 +192,8 @@
addr = Addrinfo.new([“AF_INET6”, addr.ip_port, nil, “::1”],
addr.pfamily, addr.socktype, addr.protocol)
elsif addr.ip_address == “0.0.0.0” # MacOS X 10.4 returns
“a.b.c.d” for IPv4-mapped IPv6 address.
addr = Addrinfo.new([“AF_INET6”, addr.ip_port, nil, “::1”],
addr.pfamily, addr.socktype, addr.protocol)

  •  elsif addr.ip_address == "::ffff:0.0.0.0" # MacOS X 10.6 returns 
    

“::ffff:a.b.c.d” for IPv4-mapped IPv6 address.

  •    addr = Addrinfo.new(["AF_INET6", addr.ip_port, nil, "::1"], 
    

addr.pfamily, addr.socktype, addr.protocol)
end
elsif defined?(Socket::AF_UNIX) && afamily == Socket::AF_UNIX
raise SocketError, “unbound Unix socket” if addr.unix_path == “”

e$B%A%1%C%He(B #3259 e$B$,99?7$5$l$^$7$?!#e(B (by Akira T.)

e$B%9%F!<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r27663.
Tomoyuki, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


http://redmine.ruby-lang.org/issues/show/3259