diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-03-31 00:19:47 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-03-31 00:19:47 -0700 |
commit | 1d127ce0b2edcc8b03e4cb1031ff341ff91770fe (patch) | |
tree | aae203a71adc0b0864092f017c79972f66acdf34 /lib/unicorn/configurator.rb | |
parent | 1bb4366c049a2d1c460cb08601865a24d7678dbe (diff) | |
download | unicorn-1d127ce0b2edcc8b03e4cb1031ff341ff91770fe.tar.gz |
* Expand addresses like "1:8080" to "127.0.0.1:8080" beforehand so sock_name() in SocketHelper will always return consistent results. * Add support for "unix:/path/to/foo" paths for easier synchronization with nginx config files.
Diffstat (limited to 'lib/unicorn/configurator.rb')
-rw-r--r-- | lib/unicorn/configurator.rb | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/lib/unicorn/configurator.rb b/lib/unicorn/configurator.rb index a69e971..79bbf4b 100644 --- a/lib/unicorn/configurator.rb +++ b/lib/unicorn/configurator.rb @@ -286,16 +286,26 @@ module Unicorn @set[var] = my_proc end + # expands "unix:path/to/foo" to a socket relative to the current path # expands pathnames of sockets if relative to "~" or "~username" # expands "*:port and ":port" to "0.0.0.0:port" def expand_addr(address) #:nodoc return address unless String === address - if address[0..0] == '~' - return File.expand_path(address) - elsif address =~ %r{\A\*?:(\d+)\z} - return "0.0.0.0:#$1" + + case address + when %r{\Aunix:(.*)\z} + File.expand_path($1) + when %r{\A~} + File.expand_path(address) + when %r{\A\*:(\d+)\z} + "0.0.0.0:#$1" + when %r{\A(.*):(\d+)\z} + # canonicalize the name + packed = Socket.pack_sockaddr_in($2.to_i, $1) + Socket.unpack_sockaddr_in(packed).reverse!.join(':') + else + address end - address end end |