From b1f493dcd1092fe17cccec998e175516ed5c6e47 Mon Sep 17 00:00:00 2001 From: akr Date: Sat, 2 Mar 2013 08:36:16 +0000 Subject: * lib/webrick/utils.rb: use Socket.tcp_server_sockets to create server sockets. fix [Bug #7100] https://bugs.ruby-lang.org/issues/7100 reported by sho-h (Sho Hashimoto). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/webrick/utils.rb | 23 ++++------------------- 1 file changed, 4 insertions(+), 19 deletions(-) (limited to 'lib/webrick/utils.rb') diff --git a/lib/webrick/utils.rb b/lib/webrick/utils.rb index f2373572ce..a6b5cc6a9c 100644 --- a/lib/webrick/utils.rb +++ b/lib/webrick/utils.rb @@ -72,26 +72,11 @@ module WEBrick unless port raise ArgumentError, "must specify port" end - 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) - port = sock.addr[1] if port == 0 - Utils::set_close_on_exec(sock) - sockets << sock - rescue => ex - logger.warn("TCPServer Error: #{ex}") if logger - last_error = ex - end + sockets = Socket.tcp_server_sockets(address, port) + sockets = sockets.map {|s| + s.autoclose = false + TCPServer.for_fd(s.fileno) } - raise last_error if sockets.empty? return sockets end module_function :create_listeners -- cgit v1.2.3