diff --git a/lib/webrick/server.rb b/lib/webrick/server.rb index 4a6e74c4..23cde611 100644 --- a/lib/webrick/server.rb +++ b/lib/webrick/server.rb @@ -100,7 +100,7 @@ def initialize(config={}, default=Config::General) @logger.info("ruby #{rubyv}") @listeners = [] - @shutdown_pipe = nil + @shutdown_pipe = @config[:ShutdownPipe] unless @config[:DoNotListen] if @config[:Listen] warn(":Listen option is deprecated; use GenericServer#listen", uplevel: 1) diff --git a/test/webrick/test_server.rb b/test/webrick/test_server.rb index 8162a186..9a3a8f10 100644 --- a/test/webrick/test_server.rb +++ b/test/webrick/test_server.rb @@ -160,4 +160,16 @@ def <<(msg) assert_join_threads([client_thread, server_thread]) } end + + def test_shutdown_pipe + pipe = IO.pipe + server = WEBrick::GenericServer.new( + :ShutdownPipe => pipe, + :BindAddress => '0.0.0.0', + :Port => 0, + :Logger => WEBrick::Log.new([], WEBrick::BasicLog::WARN)) + server_thread = Thread.start { server.start } + pipe.last.puts('') + assert_join_threads([server_thread]) + end end