[#45085] [ruby-trunk - Feature #5839][Open] Proposal: Bitmap Marking GC — Narihiro Nakamura <authorNari@...>

11 messages 2012/01/04

[ruby-dev:45095] [ruby-trunk - Bug #5845][Open] Addrinfo#connect_from が Addrinfo オブジェクトを受け付けない

From: Ippei Obayashi <redmine@...>
Date: 2012-01-05 09:35:33 UTC
List: ruby-dev #45095
Issue #5845 has been reported by Ippei Obayashi.

----------------------------------------
Bug #5845: Addrinfo#connect_from が Addrinfo オブジェクトを受け付けない
https://bugs.ruby-lang.org/issues/5845

Author: Ippei Obayashi
Status: Open
Priority: Normal
Assignee: 
Category: ext
Target version: 
ruby -v: ruby 2.0.0dev (2012-01-04 trunk 34210) [x86_64-linux]


Addrinfo#connect_from (ext/socket/lib/socket.rb) の rdoc には
  #   # Addrinfo object can be taken for the argument.
  #   Addrinfo.tcp("www.ruby-lang.org", 80).connect_from(Addrinfo.tcp("0.0.0.0", 4649)) {|s|
  #     s.print "GET / HTTP/1.0\r\nHost: www.ruby-lang.org\r\n\r\n"
  #     puts s.read
  #   }
  #
とあり、 Addrinfo オブジェクトを受け付けるように書かれていますが、実際には
その内容は無視されてしまいます。以下のようなスクリプトで確認できます。
  require 'socket'
  Addrinfo.tcp("www.example.com", 80).connect_from(Addrinfo.tcp("0.0.0.0", 49021)) {|s|
    p s.local_address.ip_port
    s.close
  }
原因は Addrinfo#family_addrinfo に Addrinfo オブジェクトを渡した時の返り値が適切でないことです。
添付したパッチでとりあえずは期待通りに動きます。

適当に作った問題再現用テストも添付します。



-- 
http://redmine.ruby-lang.org

In This Thread

Prev Next