From: Yukihiro Matsumoto <matz@...> Date: 2009-01-06T17:14:43+09:00 Subject: [ruby-dev:37706] Re: [Bug:trunk] Socket.getaddrinfo("www.ruby-lang.org", 80) returns only UDP information まつもと ゆきひろです In message "Re: [ruby-dev:37674] [Bug:trunk] Socket.getaddrinfo("www.ruby-lang.org", 80) returns only UDP information" on Fri, 2 Jan 2009 00:44:13 +0900, Tanaka Akira <akr@fsij.org> writes: |1.9 と 1.8 で Socket.getaddrinfo("www.ruby-lang.org", 80) の返り値が違います。 |以下のように、1.9 では 1要素の配列が返り、1.8 では 2要素の配列が返ります。 |www.ruby-lang.org:80 の情報を要求して TCP が出てこないのはよ |ろしくないんじゃないでしょうか。 | |調べてみると、r20387 の | |Fri Nov 28 18:31:21 2008 Yukihiro Matsumoto <matz@ruby-lang.org> | | * ext/socket/socket.c (sock_s_getaddrinfo): refactored to remove | code duplication regarding getaddrinfo. | |という変更が原因なようなのですが、挙動が変わってしまっている |ので、リファクタリングとしては失敗ではないでしょうか。 おっしゃる通りだと思います。が、先程私の手元で確認したところ Ruby 1.8と1.9で同じ結果になりました [["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68", 2, 1, 6], ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68", 2, 2, 17], ["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68", 2, 3, 0]] 実行したのは ruby 1.9.1 (2009-01-06 patchlevel-5000 trunk 21348) [i686-linux] ですが、これは * 環境によって異なる * 誰かが直してくださった のいずれかでしょうか。最近socket.cに手を入れていただいている のは田中さんなのでみずから直してくださったのでしょうか。私と 田中さんでは今回は同じi686-linuxですから、環境依存の可能性は 低いのですが、ライブラリその他のバージョンの違いなどもあるか もしれません。 まつもと ゆきひろ /:|)