mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* 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
This commit is contained in:
parent
d2e69f8584
commit
deb0519aec
3 changed files with 23 additions and 15 deletions
18
ChangeLog
18
ChangeLog
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue