[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]