From ae47e5afc5674c13bdbff3afc887a1505f15bd4f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 29 Mar 2009 22:22:11 -0700 Subject: Fix default listener setup Combining command-line and config file options in a reasonable manner has and always will be a painful experience. --- lib/unicorn.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/unicorn.rb b/lib/unicorn.rb index f99b433..7ffc8a5 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -86,6 +86,9 @@ module Unicorn # share the same OS-level file descriptor as the higher-level *Server # objects; we need to prevent Socket objects from being garbage-collected config_listeners -= listener_names + if config_listeners.empty? && @listeners.empty? + config_listeners << Unicorn::Const::DEFAULT_LISTEN + end config_listeners.each { |addr| listen(addr) } raise ArgumentError, "no listeners" if @listeners.empty? self.pid = @config[:pid] @@ -133,10 +136,10 @@ module Unicorn # add a given address to the +listeners+ set, idempotently # Allows workers to add a private, per-process listener via the # @after_fork hook. Very useful for debugging and testing. - def listen(address) + def listen(address, opt = {}.merge(@listener_opts[address] || {})) return if String === address && listener_names.include?(address) - if io = bind_listen(address, @listener_opts[address] || {}) + if io = bind_listen(address, opt) if Socket == io.class @io_purgatory << io io = server_cast(io) -- cgit v1.2.3-24-ge0c7