[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]