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]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
shugo 2016-12-07 12:59:48 +00:00
Родитель 8d879ca305
Коммит 03ec739729
2 изменённых файлов: 26 добавлений и 3 удалений

Просмотреть файл

@ -20,8 +20,14 @@ module WEBrick
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
:AcceptCallback => nil,
:DoNotReverseLookup => true,
:ShutdownSocketWithoutClose => false,
}
)
# for HTTPServer, HTTPRequest, HTTPResponse ...
HTTP = General.dup.update(

Просмотреть файл

@ -0,0 +1,17 @@
# 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