[#46309] [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX — "usa (Usaku NAKAMURA)" <usa@...>

13 messages 2012/10/29
[#46310] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX — Tanaka Akira <akr@...> 2012/10/29

2012年10月29日 10:31 usa (Usaku NAKAMURA) <usa@garbagecollect.jp>:

[#46366] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX — "U.Nakamura" <usa@...> 2012/11/02

こんにちは、なかむら(う)です。

[#46375] Re: [ruby-trunk - Bug #2154][Assigned] filesystem encoding of UNIX — KOSAKI Motohiro <kosaki.motohiro@...> 2012/11/02

>> とくに指定しなければ、default external は locale から設定されるので、

[ruby-dev:46189] [ruby-trunk - Bug #7100][Open] WEBrick::HTTPServer.new で BindAddress を指定しない場合に必ず警告が記録される

From: "sho-h (Sho Hashimoto)" <sho-h@...>
Date: 2012-10-02 08:21:39 UTC
List: ruby-dev #46189
Issue #7100 has been reported by sho-h (Sho Hashimoto).

----------------------------------------
Bug #7100: WEBrick::HTTPServer.new で BindAddress を指定しない場合に必ず警告が記録される
https://bugs.ruby-lang.org/issues/7100

Author: sho-h (Sho Hashimoto)
Status: Open
Priority: Low
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
以下のようにすると必ず警告が記録されるようです。

  $ ruby -v -r webrick -e 'WEBrick::HTTPServer.new(Port: 3000)'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  [2012-09-04 19:20:48] INFO  WEBrick 1.3.1
  [2012-09-04 19:20:48] INFO  ruby 1.9.3 (2012-04-20) [x86_64-linux]
  [2012-09-04 19:20:48] WARN  TCPServer Error: Address already in use - bind(2)

1.8 では記録されませんでした。1.9.1 以降は記録されました。

lib/webrick/utils.rb の WEBrick::Utils#create_listeners が以下のようになっており、

  res = Socket::getaddrinfo(address, port,
                            Socket::AF_UNSPEC,   # address family
                            Socket::SOCK_STREAM, # socket type
                            0,                   # protocol
                            Socket::AI_PASSIVE)  # flag
  last_error = nil
  sockets = []
  res.each{|ai|
    begin
      logger.debug("TCPServer.new(#{ai[3]}, #{port})") if logger
      sock = TCPServer.new(ai[3], port)
      ...

Socket.getaddrinfo が 1.9 から複数値を返すからのようです。1.8.7 だと 0.0.0.0 の方だけでした。

  $ ruby -v -r pp -r socket -e 'pp Socket::getaddrinfo(nil, 3000, Socket::AF_UNSPEC, Socket::SOCK_STREAM, 0, Socket::AI_PASSIVE)'
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  [["AF_INET", 3000, "0.0.0.0", "0.0.0.0", 2, 1, 6],
   ["AF_INET6", 3000, "::", "::", 10, 1, 6]]

WEBrick::Utils#create_listeners のコメントとマッチしなくなるデメリットがあるのですが、config[:BindAddress] のデフォルト値を 0.0.0.0 か :: のどちらかにしてしまうのはいかがでしょう。
=end



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

In This Thread

Prev Next