From 9fe037d0b46c8dcf4257f89b40ec60d8f679bb57 Mon Sep 17 00:00:00 2001 From: Jonas Nicklas Date: Fri, 9 Jul 2010 10:05:30 +0200 Subject: [PATCH] Revert "Use TCPServer to find available port for server" This reverts commit a8a4efc3790daa6f146c8bb51c7350b4b8dd518d. --- lib/capybara/server.rb | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/capybara/server.rb b/lib/capybara/server.rb index b0f41037..5f145426 100644 --- a/lib/capybara/server.rb +++ b/lib/capybara/server.rb @@ -83,10 +83,8 @@ class Capybara::Server private def find_available_port - server = TCPServer.new('127.0.0.1', 0) - @port = server.addr[1] - ensure - server.close if server + @port = 9887 + @port += 1 while is_port_open?(@port) and not is_running_on_port?(@port) end def is_running_on_port?(tested_port) @@ -99,4 +97,18 @@ private return false end + def is_port_open?(tested_port) + Timeout::timeout(1) do + begin + s = TCPSocket.new(host, tested_port) + s.close + return true + rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH + return false + end + end + rescue Timeout::Error + return false + end + end