[#41278] [BUG:1.9] BINARY should not be ASCII-compatible — Yugui <yugui@...>

WXVndWkbJEIkRyQ5ISMbKEIKCgo+IBskQiRHISIkKiQqJGAkTSQzJDMkXiRHJE41RE9AJEclKyVQ

15 messages 2010/05/11

[#41407] [Bug #3339] win32ole test failure — Usaku NAKAMURA <redmine@...>

Bug #3339: win32ole test failure

20 messages 2010/05/25
[#41411] Re: [Bug #3339] win32ole test failure — Masaki Suketa <masaki.suketa@...> 2010/05/25

助田です。

[#41412] Re: [Bug #3339] win32ole test failure — "U.Nakamura" <usa@...> 2010/05/25

こんにちは、なかむら(う)です。

[ruby-dev:41215] [Bug #3259] test_socket.rb has 1 Error on Mac OS X 10.6

From: Tomoyuki Chikanaga <redmine@...>
Date: 2010-05-08 00:47:58 UTC
List: ruby-dev #41215
Bug #3259: test_socket.rb has 1 Error on Mac OS X 10.6
http://redmine.ruby-lang.org/issues/show/3259

起票者: Tomoyuki Chikanaga
ステータス: Open, 優先度: Normal
カテゴリ: ext
ruby -v: ruby 1.9.3dev (2010-05-08 trunk 27661) [x86_64-darwin10.3.0]

Mac OS X 10.6 (SnowLeopard)上で trunk(r27662) の make test-all すると test_socket.rb が 1 Error になります。

  2) 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 の AddrInfo#connect_address で MacOS X 10.4 が返す IPv6 のアドレス表現が特殊(0.0.0.0)なので対処がされているようなのですが、10.6 ではまた少し違った表現(::ffff:0.0.0.0)を返すようになっているようです。Mac OS X 10.5 (Leopard)の環境は手元にないため未確認です。

以下の変更を加えて make test-all でこの Error がなくなること、他に Error が増えないことを確認しました。

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 == ""


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next