ruby-changes:44941
From: shugo <ko1@a...>
Date: Wed, 7 Dec 2016 21:59:53 +0900 (JST)
Subject: [ruby-changes:44941] shugo:r57014 (trunk): Delay Utils.getservername until needed.
shugo 2016-12-07 21:59:48 +0900 (Wed, 07 Dec 2016) New Revision: 57014 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=57014 Log: Delay Utils.getservername until needed. There is no need to call Utils.getservername when the :ServerName option is specified, so delay Utils.getservername until needed to avoid unnecessary DNS lookups. [ruby-core:78492] [Bug #13007] Added files: trunk/test/webrick/test_config.rb Modified files: trunk/lib/webrick/config.rb Index: test/webrick/test_config.rb =================================================================== --- test/webrick/test_config.rb (revision 0) +++ test/webrick/test_config.rb (revision 57014) @@ -0,0 +1,17 @@ https://github.com/ruby/ruby/blob/trunk/test/webrick/test_config.rb#L1 +# frozen_string_literal: false +require "test/unit" +require "webrick/config" + +class TestWEBrickConfig < Test::Unit::TestCase + def test_server_name_default + config = WEBrick::Config::General.dup + assert_equal(false, config.key?(:ServerName)) + assert_equal(WEBrick::Utils.getservername, config[:ServerName]) + assert_equal(true, config.key?(:ServerName)) + end + + def test_server_name_set_nil + config = WEBrick::Config::General.dup.update(ServerName: nil) + assert_equal(nil, config[:ServerName]) + end +end Index: lib/webrick/config.rb =================================================================== --- lib/webrick/config.rb (revision 57013) +++ lib/webrick/config.rb (revision 57014) @@ -20,8 +20,14 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/config.rb#L20 LIBDIR = File::dirname(__FILE__) # :nodoc: # for GenericServer - General = { - :ServerName => Utils::getservername, + General = Hash.new { |hash, key| + case key + when :ServerName + hash[key] = Utils.getservername + else + nil + end + }.update( :BindAddress => nil, # "0.0.0.0" or "::" or nil :Port => nil, # users MUST specify this!! :MaxClients => 100, # maximum number of the concurrent connections @@ -36,7 +42,7 @@ module WEBrick https://github.com/ruby/ruby/blob/trunk/lib/webrick/config.rb#L42 :AcceptCallback => nil, :DoNotReverseLookup => true, :ShutdownSocketWithoutClose => false, - } + ) # for HTTPServer, HTTPRequest, HTTPResponse ... HTTP = General.dup.update( -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/