[#37679] [FEATURE:trunk] EncDet again — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

23 messages 2009/01/03

[#37748] $LOAD_PATHとバージョンの運用の関係 — akira yamada / やまだあきら <akira@...>

1.9系でのバージョンの運用と$LOAD_PATHの値について質問です。

12 messages 2009/01/09
[#37758] Re: $LOAD_PATHとバージョンの運用の関係 — "NARUSE, Yui" <naruse@...> 2009/01/11

成瀬です。

[ruby-dev:37674] [Bug:trunk] Socket.getaddrinfo("www.ruby-lang.org", 80) returns only UDP information

From: Tanaka Akira <akr@...>
Date: 2009-01-01 15:44:13 UTC
List: ruby-dev #37674
1.9 と 1.8 で Socket.getaddrinfo("www.ruby-lang.org", 80) の返り値が違います。

以下のように、1.9 では 1要素の配列が返り、1.8 では 2要素の配列が返ります。

% ./ruby -rpp -rsocket -ve 'pp Socket.getaddrinfo("www.ruby-lang.org", 80)'  
ruby 1.9.1 (2009-01-01 patchlevel-5000 trunk 21253) [i686-linux]
[["AF_INET", 80, "carbon.ruby-lang.org", "221.186.184.68", 2, 2, 17]]

% ruby-1.8 -rpp -rsocket -ve 'pp Socket.getaddrinfo("www.ruby-lang.org", 80)'  
ruby 1.8.7 (2008-12-26 revision 21066) [i686-linux]
[["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]]

1.8 の返り値の 2要素はよく似ていますが、
「第5要素 - ソケットタイプに対応するInteger」と
「第6要素 - プロトコルに対応するInteger」が異なっています。

これがなにかというと、1, 6 は TCP を意味していて、2, 17 は
UDP を意味しています。

% ./ruby -rsocket -e '      
p [Socket::SOCK_STREAM, Socket::IPPROTO_TCP]
p [Socket::SOCK_DGRAM, Socket::IPPROTO_UDP]'
[1, 6]
[2, 17]

1.9 では、2, 17 の要素しかなくて、これはつまり UDP の情報し
か返ってきていないということを意味します。

www.ruby-lang.org:80 の情報を要求して TCP が出てこないのはよ
ろしくないんじゃないでしょうか。

調べてみると、r20387 の

Fri Nov 28 18:31:21 2008  Yukihiro Matsumoto  <[email protected]>

        * ext/socket/socket.c (sock_s_getaddrinfo): refactored to remove
          code duplication regarding getaddrinfo.

という変更が原因なようなのですが、挙動が変わってしまっている
ので、リファクタリングとしては失敗ではないでしょうか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread

Prev Next