about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2011-02-04 04:20:15 +0000
committerEric Wong <normalperson@yhbt.net>2011-02-04 04:20:15 +0000
commitc9a7560bb684bbdadb641ebc7597303f38c37d4f (patch)
treef70159ab024be7577a494f3a267b58ebfb6f552c
parent130d086666ccd825fcb13cf02fcf941b8fe661af (diff)
downloadrainbows-c9a7560bb684bbdadb641ebc7597303f38c37d4f.tar.gz
Binding to a random port is much easier this way
-rwxr-xr-xt/bin/unused_listen17
1 files changed, 2 insertions, 15 deletions
diff --git a/t/bin/unused_listen b/t/bin/unused_listen
index b638f54..cd536f1 100755
--- a/t/bin/unused_listen
+++ b/t/bin/unused_listen
@@ -7,24 +7,11 @@ require 'tmpdir'
 
 default_port = 8080
 addr = ENV['UNICORN_TEST_ADDR'] || '127.0.0.1'
-retries = 100
-base = 5000
 port = sock = lock_path = nil
 
 begin
-  begin
-    port = base + rand(32768 - base)
-    while port == default_port
-      port = base + rand(32768 - base)
-    end
-
-    sock = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
-    sock.bind(Socket.pack_sockaddr_in(port, addr))
-    sock.listen(5)
-  rescue Errno::EADDRINUSE, Errno::EACCES
-    sock.close rescue nil
-    retry if (retries -= 1) >= 0
-  end
+  sock = TCPServer.new(addr, 0)
+  port = sock.addr[1]
 
   # since we'll end up closing the random port we just got, there's a race
   # condition could allow the random port we just chose to reselect itself