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

ruby-changes:22195

From: akr <ko1@a...>
Date: Mon, 9 Jan 2012 20:11:37 +0900 (JST)
Subject: [ruby-changes:22195] akr:r34244 (trunk): * ext/socket/lib/socket.rb (family_addrinfo): return the given

akr	2012-01-09 20:11:24 +0900 (Mon, 09 Jan 2012)

  New Revision: 34244

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34244

  Log:
    * ext/socket/lib/socket.rb (family_addrinfo): return the given
      addrinfo object.
      Patch by Ippei Obayashi.  [ruby-dev:45095] [Bug #5845]

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/lib/socket.rb
    trunk/test/socket/test_addrinfo.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 34243)
+++ ChangeLog	(revision 34244)
@@ -1,3 +1,9 @@
+Mon Jan  9 20:08:52 2012  Tanaka Akira  <akr@f...>
+
+	* ext/socket/lib/socket.rb (family_addrinfo): return the given
+	  addrinfo object.
+	  Patch by Ippei Obayashi.  [ruby-dev:45095] [Bug #5845]
+
 Mon Jan  9 19:40:20 2012  NAKAMURA Usaku  <usa@r...>
 
 	* test/zlib/test_zlib.rb (TestZlibGzipWriter#test_writer_wrap): set
Index: ext/socket/lib/socket.rb
===================================================================
--- ext/socket/lib/socket.rb	(revision 34243)
+++ ext/socket/lib/socket.rb	(revision 34244)
@@ -16,6 +16,9 @@
       raise ArgumentError, "no address specified"
     elsif Addrinfo === args.first
       raise ArgumentError, "too many arguments" if args.length != 1
+      addrinfo = args.first
+      raise ArgumentError, "Addrinfo type mismatch" if (self.pfamily != addrinfo.pfamily) || (self.socktype != addrinfo.socktype) || (self.protocol != addrinfo.protocol)
+      addrinfo
     elsif self.ip?
       raise ArgumentError, "IP address needs host and port but #{args.length} arguments given" if args.length != 2
       host, port = args
Index: test/socket/test_addrinfo.rb
===================================================================
--- test/socket/test_addrinfo.rb	(revision 34243)
+++ test/socket/test_addrinfo.rb	(revision 34244)
@@ -352,6 +352,24 @@
         # not test failure
       end
     }
+
+    TCPServer.open("0.0.0.0", 0) {|serv|
+      serv_ai = Addrinfo.new(serv.getsockname, :INET, :STREAM)
+      serv_ai = tcp_unspecified_to_loopback(serv_ai)
+      port = random_port
+      begin
+        serv_ai.connect_from(Addrinfo.tcp("0.0.0.0", port)) {|s1|
+          s2 = serv.accept
+          begin
+            assert_equal(port, s2.remote_address.ip_port)
+          ensure
+            s2.close
+          end
+        }
+      rescue *errors_addrinuse
+        # not test failure
+      end
+    }
   end
 
   def test_connect_to

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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