From 06c1d5492bb6f89911fb8662ed7b5d9bafdd7010 Mon Sep 17 00:00:00 2001 From: evanweaver Date: Thu, 18 Oct 2007 19:38:47 +0000 Subject: how's this git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@688 19e92222-5c0b-0410-8929-a290d50e31e9 --- lib/mongrel.rb | 8 +++----- lib/mongrel/configurator.rb | 11 ++++++++--- test/test_configurator.rb | 6 +++--- test/testhelp.rb | 5 +++++ 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 967f0cd..da99356 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -809,13 +809,11 @@ module Mongrel # Stops the acceptor thread and then causes the worker threads to finish # off the request queue before finally exiting. - def stop(asynchronous=true) - if asynchronous - stopper = Thread.new { @acceptor.raise(StopServer.new) } - stopper.priority = 10 - else + def stop + stopper = Thread.new do @acceptor.raise(StopServer.new) end + stopper.priority = 10 end end diff --git a/lib/mongrel/configurator.rb b/lib/mongrel/configurator.rb index 6c9a6c8..5d5d374 100644 --- a/lib/mongrel/configurator.rb +++ b/lib/mongrel/configurator.rb @@ -288,9 +288,14 @@ module Mongrel # stop processing requests (gracefully). By default it # assumes that you don't want to restart. def stop(needs_restart=false, asynchronous=true) - @listeners.each {|name,s| - s.stop(asynchronous) - } + + @listeners.each {|name,s| s.stop } + + unless asynchronous + sleep(0.5) while (@listeners.map do |name, listener| + listener.acceptor.alive? + end.any?) + end @needs_restart = needs_restart end diff --git a/test/test_configurator.rb b/test/test_configurator.rb index d8e9a11..5d1bee9 100644 --- a/test/test_configurator.rb +++ b/test/test_configurator.rb @@ -77,9 +77,9 @@ class ConfiguratorTest < Test::Unit::TestCase assert $test_plugin_fired == 6, "Test filter plugin didn't run 6 times." end - redirect_test_io do - config.stop(false, true) - end +# redirect_test_io do + config.stop(false, false) +# end assert_raise Errno::EBADF, Errno::ECONNREFUSED do res = Net::HTTP.get(URI.parse("http://localhost:4501/")) diff --git a/test/testhelp.rb b/test/testhelp.rb index 78956a9..9bf719f 100644 --- a/test/testhelp.rb +++ b/test/testhelp.rb @@ -4,6 +4,11 @@ # Additional work donated by contributors. See http://mongrel.rubyforge.org/attributions.html # for more information. +if ENV['DEBUG'] + require 'ruby-debug' + Debugger.start +end + def redirect_test_io orig_err = STDERR.dup orig_out = STDOUT.dup -- cgit v1.2.3-24-ge0c7