ruby-changes:10377
From: akr <ko1@a...>
Date: Sat, 31 Jan 2009 22:41:51 +0900 (JST)
Subject: [ruby-changes:10377] Ruby:r21921 (trunk): * lib/resolv.rb (Resolv::DNS#each_address): don't query IPv6 address
akr 2009-01-31 22:40:05 +0900 (Sat, 31 Jan 2009) New Revision: 21921 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21921 Log: * lib/resolv.rb (Resolv::DNS#each_address): don't query IPv6 address if the host has no global IPv6 address. Modified files: trunk/ChangeLog trunk/lib/resolv.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 21920) +++ ChangeLog (revision 21921) @@ -1,3 +1,8 @@ +Sat Jan 31 22:38:46 2009 Tanaka Akira <akr@f...> + + * lib/resolv.rb (Resolv::DNS#each_address): don't query IPv6 address + if the host has no global IPv6 address. + Sat Jan 31 22:29:05 2009 Tanaka Akira <akr@f...> * include/ruby/ruby.h (STR2CSTR): removed. Index: lib/resolv.rb =================================================================== --- lib/resolv.rb (revision 21920) +++ lib/resolv.rb (revision 21921) @@ -379,9 +379,21 @@ def each_address(name) each_resource(name, Resource::IN::A) {|resource| yield resource.address} - each_resource(name, Resource::IN::AAAA) {|resource| yield resource.address} + if use_ipv6? + each_resource(name, Resource::IN::AAAA) {|resource| yield resource.address} + end end + def use_ipv6? + begin + list = Socket.ip_address_list + rescue NotImplementedError + return true + end + list.any? {|a| a.ipv6? && !a.ipv6_loopback? && !a.ipv6_linklocal? } + end + private :use_ipv6? + ## # Gets the hostname for +address+ from the DNS resolver. # -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/