From 0e59330750559e2cb8f81d9568c2100bd5c6aaec Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 10 Apr 2009 00:32:40 -0700 Subject: config: handle listener unbind/replace in config file Rather than blindly appending to our listener set with every "listen" directive read in the config file, reset our internal array. Listeners specified on the command-line are always preserved between config reloads. --- lib/unicorn.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib') diff --git a/lib/unicorn.rb b/lib/unicorn.rb index 6b50319..02419e7 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -59,6 +59,7 @@ module Unicorn @io_purgatory = [] # prevents IO objects in here from being GC-ed @request = @rd_sig = @wr_sig = nil @reexec_pid = 0 + @init_listeners = options[:listeners] ? options[:listeners].dup : [] @config = Configurator.new(options.merge(:use_defaults => true)) @listener_opts = {} @config.commit!(self, :skip => [:listeners, :pid]) @@ -570,6 +571,7 @@ module Unicorn def load_config! begin logger.info "reloading config_file=#{@config.config_file}" + @config[:listeners].replace(@init_listeners) @config.reload @config.commit!(self) kill_each_worker(:QUIT) -- cgit v1.2.3-24-ge0c7