Project

General

Profile

Bug #987

Socket.getaddrinfo("www.ruby-lang.org", 80) returns only UDP information

Added by matz (Yukihiro Matsumoto) almost 11 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:37706]

Description

=begin
まつもと ゆきひろです

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ですから、環境依存の可能性は
低いのですが、ライブラリその他のバージョンの違いなどもあるか
もしれません。

                             まつもと ゆきひろ /:|)

=end

History

#1

Updated by matz (Yukihiro Matsumoto) almost 11 years ago

  • Status changed from Open to Closed

=begin
fixed in r21278.
=end

Also available in: Atom PDF