diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-13 06:21:50 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-04-13 06:21:50 +0000 |
commit | deb0519aec1e68bdcf019d99e3e8be55fd5b2faf (patch) | |
tree | 84d30af3bd7bb57ab3fd222e8c43a94992809d40 | |
parent | d2e69f8584577240d59560d0f68300af59430a4c (diff) | |
download | ruby-deb0519aec1e68bdcf019d99e3e8be55fd5b2faf.tar.gz |
* lib/webrick/server.rb (WEBrick::GenericServer#stop): fix r35303;
this method is to deny new connections, not shutdown yet.
* lib/webrick/server.rb (WEBrick::GenericServer#start):
re-raise exception only when the exception is Interrupt (^C).
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35315 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | lib/webrick/server.rb | 11 | ||||
-rw-r--r-- | test/webrick/test_server.rb | 9 |
3 files changed, 23 insertions, 15 deletions
@@ -1,3 +1,11 @@ +Fri Apr 13 15:17:36 2012 NARUSE, Yui <naruse@ruby-lang.org> + + * lib/webrick/server.rb (WEBrick::GenericServer#stop): fix r35303; + this method is to deny new connections, not shutdown yet. + + * lib/webrick/server.rb (WEBrick::GenericServer#start): + re-raise exception only when the exception is Interrupt (^C). + Thu Apr 12 19:51:45 2012 Tadayoshi Funaba <tadf@dotrb.org> * ext/date/date_core.c: added some notes. @@ -7,11 +15,11 @@ Wed Apr 11 17:16:49 2012 Koichi Sasada <ko1@atdot.net> * compile.c (compile_array, compile_array_): Divide big array (or hash) literals into several blocks and concatetene them. There was a problem that a big array (hash) - literal causes SystemStackError exception (stack overflow) - because VM push all contents of the literal onto VM stack to - make an array (or hash). To solve this issue, we make several - arrays (hashes) and concatenate them to make a big array (hash) - object. [ruby-dev:37701] [Bug #982] + literal causes SystemStackError exception (stack overflow) + because VM push all contents of the literal onto VM stack to + make an array (or hash). To solve this issue, we make several + arrays (hashes) and concatenate them to make a big array (hash) + object. [ruby-dev:37701] [Bug #982] * compile.c (iseq_compile_each, setup_args): use modified compile_array. diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb index 22b91ad535..bd9dcb0d1c 100644 --- a/lib/webrick/server.rb +++ b/lib/webrick/server.rb @@ -133,16 +133,17 @@ module WEBrick rescue Errno::EBADF, IOError => ex # if the listening socket was closed in GenericServer#shutdown, # IO::select raise it. - rescue StandardError => ex - msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" - @logger.error msg - rescue Exception => ex + rescue Interrupt => ex # ^C @logger.fatal ex raise + rescue Exception => ex + msg = "#{ex.class}: #{ex.message}\n\t#{ex.backtrace[0]}" + @logger.error msg end end ensure + @status = :Shutdown @logger.info "going to shutdown ..." thgroup.list.each{|th| th.join if th[:WEBrickThread] } call_callback(:StopCallback) @@ -157,7 +158,7 @@ module WEBrick def stop if @status == :Running - @status = :Stop + @status = :Shutdown end end diff --git a/test/webrick/test_server.rb b/test/webrick/test_server.rb index 534fe9b077..86fccac09c 100644 --- a/test/webrick/test_server.rb +++ b/test/webrick/test_server.rb @@ -29,23 +29,22 @@ class TestWEBrickServer < Test::Unit::TestCase :StopCallback => Proc.new{ stopped += 1 }, } - e = assert_raises(Exception) do + e = assert_raises(Interrupt) do TestWEBrick.start_server(Echo, config) { |server, addr, port, log| listener = server.listeners.first def listener.accept - raise Exception, 'fatal' # simulate ^C + Process.kill(:INT, $$) # simulate ^C end - true while server.status != :Running + Thread.pass while server.status != :Running TCPSocket.open(addr, port) { |sock| sock << "foo\n" } - sleep 0.1 until server.status == :Stop + Thread.pass until server.status == :Stop } end - assert_equal('fatal', e.message) assert_equal(stopped, 1) end |