diff options
author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-28 06:05:44 +0000 |
---|---|---|
committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-02-28 06:05:44 +0000 |
commit | 54cd7ea16834cac420067b7ea8bee3b619f082c0 (patch) | |
tree | ebec79635734b69461fb678ccde1c0a082c25413 | |
parent | 2f83f7a7f466eed59044d2be4898ceb426b7cdb7 (diff) | |
download | ruby-54cd7ea16834cac420067b7ea8bee3b619f082c0.tar.gz |
* ext/socket/lib/socket.rb (BasicSocket#connect_address): returns ::1
if the address is IPv4-mapped IPv6 address for 0.0.0.0 for MacOS X.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22672 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | ext/socket/lib/socket.rb | 2 |
2 files changed, 7 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Sat Feb 28 14:50:47 2009 Tanaka Akira <akr@fsij.org> + + * ext/socket/lib/socket.rb (BasicSocket#connect_address): returns ::1 + if the address is IPv4-mapped IPv6 address for 0.0.0.0 for MacOS X. + Sat Feb 28 00:18:40 2009 Tanaka Akira <akr@fsij.org> * ext/socket/raddrinfo.c: suppress strict-aliasing warning with diff --git a/ext/socket/lib/socket.rb b/ext/socket/lib/socket.rb index 8a5e180f55..8d325c941c 100644 --- a/ext/socket/lib/socket.rb +++ b/ext/socket/lib/socket.rb @@ -190,6 +190,8 @@ class BasicSocket raise SocketError, "unbound IPv6 socket" if addr.ip_port == 0 if addr.ip_address == "::" 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) end elsif defined?(Socket::AF_UNIX) && afamily == Socket::AF_UNIX raise SocketError, "unbound Unix socket" if addr.unix_path == "" |