bin/*: enforce -p/--port argument to be a valid integer
authorEric Wong <e@80x24.org>
Fri, 1 Nov 2013 20:02:47 +0000 (1 20:02 +0000)
committerEric Wong <normalperson@yhbt.net>
Fri, 1 Nov 2013 20:05:19 +0000 (1 20:05 +0000)
Users may confuse '-p' with the (to-be-deprecated) '-P/--pid'
option, leading to surprising behavior if a pathname is passed as a
port, because String#to_i would convert it to zero, causing:

    TCPServer.new(host, port = 0)

to bind to a random, unused port.

bin/unicorn
bin/unicorn_rails

index 01984f8..c272e43 100755 (executable)
@@ -47,9 +47,9 @@ op = OptionParser.new("", 24, '  ') do |opts|
     rackup_opts[:set_listener] = true
   end
 
-  opts.on("-p", "--port PORT",
-          "use PORT (default: #{Unicorn::Const::DEFAULT_PORT})") do |p|
-    rackup_opts[:port] = p.to_i
+  opts.on("-p", "--port PORT", Integer,
+          "use PORT (default: #{Unicorn::Const::DEFAULT_PORT})") do |port|
+    rackup_opts[:port] = port
     rackup_opts[:set_listener] = true
   end
 
index 4bd599f..b080846 100755 (executable)
@@ -48,9 +48,9 @@ op = OptionParser.new("", 24, '  ') do |opts|
     rackup_opts[:set_listener] = true
   end
 
-  opts.on("-p", "--port PORT",
-          "use PORT (default: #{Unicorn::Const::DEFAULT_PORT})") do |p|
-    rackup_opts[:port] = p.to_i
+  opts.on("-p", "--port PORT", Integer,
+          "use PORT (default: #{Unicorn::Const::DEFAULT_PORT})") do |port|
+    rackup_opts[:port] = port
     rackup_opts[:set_listener] = true
   end